如何通过Android中的共享流程保存和检索数据
-
29-09-2019 - |
题
我是Android平台的新手。请解决我的查询“如何使用Android中的共享流程保存和检索数据”
解决方案
许多应用程序可能会提供一种在特定应用程序或活动设置上捕获用户首选项的方法。为了支持这一点,Android提供了一组简单的API。
偏好通常是名称值对。它们可以在应用程序中的各种活动中存储为“共享偏好”(注意当前不能在过程中共享)。或者可以是需要专门存储的活动。
共享偏好:所有组件(活动,服务等)都可以使用共享的偏好。
活动处理的偏好:这些偏好只能在活动中使用,并且应用程序的其他组件不能使用。
共享首选项:
共享的偏好是在借助 getSharedPreferences
方法的方法 Context
班级。首选项存储在默认文件(1)中,或者您可以指定用于参考首选项的文件名(2)。
(1)这是指定文件名时如何获得实例
public static final String PREF_FILE_NAME = "PrefFile";
SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
MODE_PRIVATE
是首选项的操作模式。这是默认模式,意味着仅通过调用应用程序访问创建的文件。支持其他两个模式是 MODE_WORLD_READABLE
和 MODE_WORLD_WRITEABLE
. 。在 MODE_WORLD_READABLE
其他应用程序可以读取创建的文件,但不能修改它。的情况下 MODE_WORLD_WRITEABLE
其他应用程序还具有创建文件的写入权限。
(2) 推荐的方式 是通过默认模式使用,而无需指定文件名
SharedPreferences preferences = PreferencesManager.getDefaultSharedPreferences(context);
最后,一旦您拥有首选项实例,这就是您的方式 检索存储的值 从偏好中:
int storedPreference = preferences.getInt("storedInt", 0);
到 存储值 在偏好文件中 SharedPreference.Editor
必须使用对象。 Editor
是 SharedPreference
班级。
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
编辑还支持诸如此类的方法 remove()
和 clear()
从文件中删除首选项值。
活动首选项:
共享偏好可以由其他应用程序组件使用。但是,如果您不需要与其他组件分享偏好,而是想拥有私人偏好的活动。您可以在 getPreferences()
活动的方法。这 getPreference
方法使用 getSharedPreferences()
具有优先文件名称的活动类名称的方法。
以下是获得首选项的代码
SharedPreferences preferences = getPreferences(MODE_PRIVATE);
int storedPreference = preferences.getInt("storedInt", 0);
存储值的代码在共享首选项的情况下也相同。
SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
您还可以使用其他方法,例如将活动状态存储在数据库中。注意Android还包含一个称为的软件包 android.preference
. 。该软件包定义了以实现应用程序首选项UI的类。
要查看更多示例,请检查Android的 数据存储 在开发人员网站上发布。
其他提示
此链接具有所有内容: http://developer.android.com/guide/topics/data/data-storage.html
基本上就像:
// Restore preferences
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
// Get one Setting
boolean silent = settings.getBoolean("silentMode", false);