【发布时间】:2012-05-19 18:20:14
【问题描述】:
我正在构建一个带有 PreferenceActivity 和 Service 的应用程序(由于 android:process=":remote" 标志)并且两者都需要以编程方式访问 SharedPreferences。目前,我正在获取一个 SharedPreference 对象,该对象具有以下代码,该对象使用 Service 和 PreferenceActivitygetSharedPreferences 方法/em> 类:
SharedPreferences sharedPrefs = getSharedPreferences("com.mypackage_preferences", MODE_PRIVATE, MODE_MULTI_PROCESS)
和下面的一样吗?
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences()
1) 在第二个中我不能指定标志,或者有没有办法指定它们?
2)我真的需要指定 MODE_MULTI_PROCESS,因为我正在访问/修改来自 Service 和 PreferenceActivity 的共享首选项吗?我认为大多数时候你有一个修改属性的 PreferenceActivity 和另一个读取/修改它们的 Activity,所以 MODE_MULTI_PROCESS 几乎总是需要,或者只需要在SharedPreferences 有多个并且可能同时访问(在我的情况下,后台服务可以在您在 PreferenceActivity 中编辑首选项时处于活动状态)
3)MODE_MULTI_PROCESS 的文档说 在应用程序有多个进程,所有进程都写入同一个 SharedPreferences 文件的情况下,有时需要这种行为,这样做意味着我的 Service 和我的 PreferenceActivity 可以指向不同的首选项文件?如何在 PreferenceActivity 中更改首选项文件名?
4) 以这种方式命名共享首选项是因为它们在您的应用程序的所有组件(活动、服务等)之间共享,对吧?非共享首选项(即您可以在活动中使用 getPreferences() 获得的首选项)对于创建它们的组件是本地的,但被保存在同一个 *com.mypackage_preferences* 文件中?这可以回答我对 3)
点的疑问【问题讨论】:
标签: android sharedpreferences android-service android-preferences preferenceactivity