Android数据持久化技术
-
文件存储
Context提供了
getFileOutput(String fileName,int mode)
mode:MODE_APPEND(文件存在时在后添加), MODE_PRIVATE(默认模式,文件存在时覆盖)
使用输入输出流对文件进行读取
-
SharedPreferences
-
获取SharedPreferences对象
-
getContext.getSharedPreferences(String filename,int mode)
。mode目前只有MODE_PRIVATE(只能被当前应用才能进行读写) -
getActivity.getSharedPreferences(String filename,int mode)
。底层使用的是context中SharedPreferences。 -
PreferencesManager.getSharedPreferences(Context context)
-
使用
-
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPref.edit(); editor.putInt(getString(R.string.saved_high_score_key), newHighScore); editor.apply();
-
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); int defaultValue = getResources().getInteger(R.integer.saved_high_score_default_key); int highScore = sharedPref.getInt(getString(R.string.saved_high_score_key), defaultValue);
-
注意:保存时可以使用apply和commit提交,前者是异步,后者是同步所以使用commit避免在主线程中使用。
-
-
SQLite
-
使用
public class MyDBHelper extends SQLiteOpenHelper { public MyDBHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); } public MyDBHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version, @Nullable DatabaseErrorHandler errorHandler) { super(context, name, factory, version, errorHandler); } @RequiresApi(api = Build.VERSION_CODES.P) public MyDBHelper(@Nullable Context context, @Nullable String name, int version, @NonNull SQLiteDatabase.OpenParams openParams) { super(context, name, version, openParams); } @Override public void onCreate(SQLiteDatabase db) { } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } } //在创建数据时使用实例调用getWriteableDatebase()
-