Android 数据持久化
2016-06-28 10:06
477 查看
1.数据库SQLite
处理大量数据以及与数据有关的逻辑时使用
数据库数据文件data/data/packageName/datebases/test.db
platform tools目录 adb, sqlite3
查看数据文件用sqlite3
SELETE * FROM table;(分号)http://jingyan.baidu.com/article/c843ea0b9bbf1b77931e4ad4.html
2.轻量级处理SharedPreferences
适合app默认配置的保存(初始化时使用)
存
取
3.ContentProvider
跨应用共享数据和使用系统数据如联系人,图片,视频,音频
4.文件I/O
java.io.FileInputStream和java.io.FileOutputStream这两个类来实现对文件的读写(导出文件使用,不适合做数据交互)
5.网络请求服务器数据
少量涉及安全的数据需要实时获取并保存在服务器
处理大量数据以及与数据有关的逻辑时使用
数据库数据文件data/data/packageName/datebases/test.db
platform tools目录 adb, sqlite3
给予权限才能看到.db adb shell su -c "chmod 777 /data" su -c "chmod 777 /data/data"
查看数据文件用sqlite3
SELETE * FROM table;(分号)http://jingyan.baidu.com/article/c843ea0b9bbf1b77931e4ad4.html
2.轻量级处理SharedPreferences
适合app默认配置的保存(初始化时使用)
存
public static void put(Context context, String key, Object object) { SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); SharedPreferences.Editor editor = sp.edit(); if (object instanceof String) { editor.putString(key, (String) object); } else if (object instanceof Integer) { editor.putInt(key, (Integer) object); } else if (object instanceof Boolean) { editor.putBoolean(key, (Boolean) object); } else if (object instanceof Float) { editor.putFloat(key, (Float) object); } else if (object instanceof Long) { editor.putLong(key, (Long) object); } else { editor.putString(key, object.toString()); } SharedPreferencesCompat.apply(editor); }
取
public static Object get(Context context, String key, Object defaultObject) { SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); if (defaultObject instanceof String) { return sp.getString(key, (String) defaultObject); } else if (defaultObject instanceof Integer) { return sp.getInt(key, (Integer) defaultObject); } else if (defaultObject instanceof Boolean) { return sp.getBoolean(key, (Boolean) defaultObject); } else if (defaultObject instanceof Float) { return sp.getFloat(key, (Float) defaultObject); } else if (defaultObject instanceof Long) { return sp.getLong(key, (Long) defaultObject); } return null; }
3.ContentProvider
跨应用共享数据和使用系统数据如联系人,图片,视频,音频
//query 获取联系人 ContentResolver contentResolver = this.getContentResolver(); Cursor cursor = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null,null); if(cursor!=null) { while (cursor.moveToNext()) { int index = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME); String name = cursor.getString(index); String phone = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); } }
4.文件I/O
java.io.FileInputStream和java.io.FileOutputStream这两个类来实现对文件的读写(导出文件使用,不适合做数据交互)
5.网络请求服务器数据
少量涉及安全的数据需要实时获取并保存在服务器
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories