Android中的活动,窗口小部件,后台服务等之间的标准首选项保存和访问方法

时间:2015-10-17 20:16:36

标签: android android-context android-sharedpreferences

我是Android的新手,我在Android开发应用时遇到了一个场景,我无法弄清楚应该使用哪种方法来保存和访问不同活动之间的偏好,小部件,后台服务,广播接收器等...

我相信必须有一个简单的内置方式,但在搜索了一段时间之后,我只是遇到了一些我根本无法理解的有线文章而没有指出一个简单的方法来帮助我的情况

以下是我的情景:

  • 我有一个应用程序,可以有多个活动,多个小部件, 多个后台服务以及多个广播接收器(I. 明白我们也为小部件使用接收器)...
  • 上述任何物体可能存在或不存在 在当前情况下,例如,小部件可以存在于 主屏幕,而没有活动或后台服务正在运行, 或者没有活动时可能正在运行后台服务 此刻正在运行,这一切都在继续 情况相同......
  • 当家中存在小部件时也是可能的 屏幕,活动也在运行,甚至可能有服务 也跑了一些。
  • 服务可能在单独的线程上运行。

基于这些条件,Android中使用的标准方法是什么,以实现我的目标,即保存和访问数据?

我的常规方法是使用SharedPreferences,如下所示:

SharedPreferences p = getSharedPreferences("Settings", MODE_PRIVATE);

但第一个问题是SharedPreferences需要一个Context而我在服务中没有这个例子。即使我以某种方式将我的主要活动的Context传递给服务,当该活动在相同的服务仍在单独的线程中运行时完成或终止时会发生什么?

所以,如果有人能指导我在这种情况下保存和访问数据的正确方法,或者有一个总是有效的Context内部服务和小部件等的方式,而无需任何活动存在,所以从getSharedPreferences("Settings", MODE_PRIVATE)调用示例Context总是返回相同的SharedPreferences对象,我可以使用其他来源存储在其中的数据,我会非常高兴。谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用应用程序上下文而不是活动上下文来访问SharedPreferences。

getApplicationContext().getSharedPreferences("Settings",MODE_PRIVATE);