在 Android 中进行“应用程序设置”的最佳方法是什么?

我想为 Android 应用程序存储一些应用程序设置(比如 API 的 URL 和一些用于测试的设置)。

我主要作为一个 .NET开发人员工作,所以我习惯于使用文件 app.config来实现这个目的。在安卓系统中有什么好办法吗?

79047 次浏览

许多应用程序可以提供一种方法来捕获特定应用程序或活动的设置上的用户首选项。为了支持这一点,Android 提供了一组简单的 API。

首选项通常是名称值对。它们可以作为“共享首选项”存储在应用程序中的各种活动中(注意,当前它不能在进程之间共享)。或者它可以是需要特定于某个活动来存储的内容。

  1. Shared Preferences: The shared preferences can be used by all the components (activities, services etc) off the applications.

  2. 活动处理首选项: 这些首选项只能在活动中使用,不能由应用程序的其他组件使用。

共享偏好:

共享首选项在 Context类的 getSharedPreferences方法的帮助下进行管理。首选项存储在默认文件(1)中,或者您可以指定用于引用首选项的文件名(2)。

(1)下面是在指定文件名时获取实例的方法

public static final String PREF_FILE_NAME = "PrefFile";
SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);

MODE_PRIVATE是首选项的操作模式。这是默认模式,意味着创建的文件只能由调用应用程序访问。支持的其他两种模式是 MODE_WORLD_READABLEMODE_WORLD_WRITEABLE。在 MODE_WORLD_READABLE中,其他应用程序可以读取创建的文件,但不能修改它。在 MODE_WORLD_WRITEABLE的情况下,其他应用程序也对创建的文件具有写权限。

(2) 推荐的方法 is to use by the default mode, without specifying the file name

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);

最后,一旦您有了首选项实例,以下是如何从首选项中获得 检索存储的值:

 int storedPreference = preferences.getInt("storedInt", 0);

对于首选项文件中的 存储价值,必须使用 SharedPreference.Editor对象。EditorSharedPreference类的嵌套接口。

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 在开发者网站上的 数据存储文章。