DELPHI XE5-XE8 使用安卓的SharedPreferences封存小型数据
DELPHI XE5-XE8 使用安卓的SharedPreferences保存小型数据
习惯用INI保存小批量的数据的方法其实在安卓上也可以使用。但是更正宗的可能还是使用SharedPreferences。
SharedPreferences也是一种轻型的数据存储方式,
它的本质是基于XML文件存储key-value键值对数据,
通常用来存储一些简单的配置信息。
其存储位置在/data/data/<包名>/shared_prefs目录下。
public class SharedPreferencesUtil { //存储的sharedpreferences文件名 private static final String FILE_NAME = "save_file_name"; /** * 保存数据到文件 * @param context * @param key * @param data */ public static void saveData(Context context, String key,Object data){ String type = data.getClass().getSimpleName(); SharedPreferences sharedPreferences = context .getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); Editor editor = sharedPreferences.edit(); if ("Integer".equals(type)){ editor.putInt(key, (Integer)data); }else if ("Boolean".equals(type)){ editor.putBoolean(key, (Boolean)data); }else if ("String".equals(type)){ editor.putString(key, (String)data); }else if ("Float".equals(type)){ editor.putFloat(key, (Float)data); }else if ("Long".equals(type)){ editor.putLong(key, (Long)data); } editor.commit(); } /** * 从文件中读取数据 * @param context * @param key * @param defValue * @return */ public static Object getData(Context context, String key, Object defValue){ String type = defValue.getClass().getSimpleName(); SharedPreferences sharedPreferences = context.getSharedPreferences (FILE_NAME, Context.MODE_PRIVATE); //defValue为为默认值,如果当前获取不到数据就返回它 if ("Integer".equals(type)){ return sharedPreferences.getInt(key, (Integer)defValue); }else if ("Boolean".equals(type)){ return sharedPreferences.getBoolean(key, (Boolean)defValue); }else if ("String".equals(type)){ return sharedPreferences.getString(key, (String)defValue); }else if ("Float".equals(type)){ return sharedPreferences.getFloat(key, (Float)defValue); }else if ("Long".equals(type)){ return sharedPreferences.getLong(key, (Long)defValue); } return null; } }
DELPHI XE5以上的写法是这样的:(网上搜的,哈哈)
uses AndroidApi.Jni.JavaTypes, AndroidApi.Jni.App,AndroidApi.Jni.GraphicsContentViewText,FMX.Helpers.Android; {$R *.fmx} procedure TForm1.Button1Click(Sender: TObject); var Prefs: JSharedPreferences; Editor: JSharedPreferences_Editor; I: Integer; F: Single; S: Jstring; begin Prefs := SharedActivity.getPreferences(TJActivity.JavaClass.MODE_PRIVATE); Editor := Prefs.edit; Editor.putInt(StringToJString('MyIntKey'), 999); Editor.putFloat(StringToJString('MyFloatKey'), 123.456); Editor.putString(StringToJString('MyStrKey'), StringToJString('This is a test')); Editor.apply; I := Prefs.getInt(StringToJString('MyIntKey'), 0); F := Prefs.getFloat(StringToJString('MyFloatKey'), 0); S := Prefs.getString(StringToJString('MyStrKey'), StringToJString('')); end;