如何在Android应用程序中存储设置?

我希望我的应用程序保存/加载设置(并在“升级”/安装新版本时保留它们)。我可以为此使用哪个组件?我猜注册表将不可用:-)

更新:像字符串、数字或布尔值这样的设置。应用程序设置,用户在应用程序内部“管理”。

回答

Android 等价于 Registry 是SharedPreferences

您可以SharedPreferences通过TAndroidHelper.PrivatePreferences类函数轻松获取应用程序私有实例。

为了检索存储的设置,您可以使用以下方法:

  JSharedPreferences = interface(IJavaInstance)
    ['{E44179D1-B961-4316-A8B0-45B52A482FA7}']
    function &contains(key: JString): Boolean; cdecl;
    function edit: JSharedPreferences_Editor; cdecl;
    function getAll: JMap; cdecl;
    function getBoolean(key: JString; defValue: Boolean): Boolean; cdecl;
    function getFloat(key: JString; defValue: Single): Single; cdecl;
    function getInt(key: JString; defValue: Integer): Integer; cdecl;
    function getLong(key: JString; defValue: Int64): Int64; cdecl;
    function getString(key: JString; defValue: JString): JString; cdecl;
    function getStringSet(key: JString; defValues: JSet): JSet; cdecl;
    procedure registerOnSharedPreferenceChangeListener(listener: JSharedPreferences_OnSharedPreferenceChangeListener); cdecl;
    procedure unregisterOnSharedPreferenceChangeListener(listener: JSharedPreferences_OnSharedPreferenceChangeListener); cdecl;
  end;

为了保存设置,您需要edit在首选项实例上调用方法,然后您可以使用以下编辑器方法来存储数据:

  JSharedPreferences_Editor = interface(IJavaInstance)
    ['{A162AACF-DD6D-466E-838B-363E6B092CA4}']
    procedure apply; cdecl;
    function clear: JSharedPreferences_Editor; cdecl;
    function commit: Boolean; cdecl;
    function putBoolean(key: JString; value: Boolean): JSharedPreferences_Editor; cdecl;
    function putFloat(key: JString; value: Single): JSharedPreferences_Editor; cdecl;
    function putInt(key: JString; value: Integer): JSharedPreferences_Editor; cdecl;
    function putLong(key: JString; value: Int64): JSharedPreferences_Editor; cdecl;
    function putString(key: JString; value: JString): JSharedPreferences_Editor; cdecl;
    function putStringSet(key: JString; values: JSet): JSharedPreferences_Editor; cdecl;
    function remove(key: JString): JSharedPreferences_Editor; cdecl;
  end;

完成修改设置后,您需要调用applycommit在编辑器上。两者唯一的区别是apply只存储数据,commit返回操作成功与否。

以下是存储和读取布尔数据的简单示例。

保存数据:

uses
  AndroidApi.Helpers,
  Androidapi.JNI.GraphicsContentViewText,


var
  Pref: JSharedPreferences;
  PrefEditor: JSharedPreferences_Editor;
  Success: Boolean;
begin
  Pref := TAndroidHelper.PrivatePreferences;

  PrefEditor := Pref.edit;
  PrefEditor.putBoolean(StringToJString('key'), True);
  PrefEditor.apply;
  // or
  Success := PrefEditor.commit;
end;

加载数据:

var
  Pref: JSharedPreferences;
  Value: Boolean;
begin
  Pref := TAndroidHelper.PrivatePreferences;     
  Value := Pref.getBoolean(StringToJString('key'), False);
end;

您还可以使用任何自定义格式(如 Ini 文件)将数据保存在应用程序本地存储中。


以上是如何在Android应用程序中存储设置?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>