1)我在res / xml / preferences.xml中定义了用户首选项,以便用户可以使用PreferenceActivity管理他们的首选项.
2)我想为我的应用程序的全局配置首选项定义另一个文件.
管理我的应用配置偏好的最佳方法是什么?我应该创建另一个带有配置值的XML文件,还是应该在strings.xml中指定这些配置值?管理配置首选项的最佳做法是什么?
它们存储在应用程序文件夹中的设备上
/data/data/com.your.pkg/default.prefs
尝试不要指定文件名,因为您会在首选项文件中遇到一些问题,例如此OP在此问题中有:How do I get preferences to work in Android?
SharedPreferences preferences = PreferenceManager .getDefaultSharedPreferences(context);
然后你可能要查询
preferences.getString('weightPref',null);
许多应用程序可以提供捕获用户对特定应用程序或活动的设置的偏好的方式.为了支持这一点,Android提供了一组简单的API.
首选项通常是名称值对.它们可以作为“共享首选项”存储在应用程序中的各种活动中(注意,目前它不能跨进程共享).或者它可以是需要存储特定于活动的东西.
>共享首选项:共享首选项可以由应用程序之外的所有组件(活动,服务等)使用.
>活动处理首选项:这些首选项只能在活动中使用,不能由应用程序的其他组件使用.
共享偏好:
共享首选项在Context类的getSharedPreferences方法的帮助下进行管理.首选项存储在默认文件(1)中,或者您可以指定用于引用首选项的文件名(2).
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,其他应用程序也具有对创建文件的写入权限.
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的Data Storage帖子.