0

我很陌生,Android在开发应用程序时遇到了一个场景Android,我不知道应该使用什么方法来保存和访问我在不同活动、小部件、后台服务、广播接收器等之间的偏好...

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

这是我的场景:

  • 我有一个应用程序,它可以有多个活动、多个小部件、多个后台服务以及多个广播接收器(我知道我们也将接收器用于小部件)......
  • 上面提到的任何对象都可能存在或不存在,具体取决于当前情况,例如,当没有活动或后台服务正在运行时,小部件可能出现在主屏幕中,或者后台服务可能正在运行而没有活动正在运行那一刻,这对于所有其他可能的情况都以同样的方式进行......
  • 也有可能当一个小部件出现在主屏幕中时,一个活动也在运行,甚至可能有一个服务也在运行。
  • 服务可能在单独的线程上运行。

那么基于这些条件Android,实现我在它们之间保存和访问数据的目标的标准方法是什么?

我的正常方法是SharedPreferences这样使用:

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

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

因此,如果有人可以指导我在这种情况下以正确的方式保存和访问数据,或者在Context不需要任何活动的情况下拥有始终有效的内部服务和小部件等的方式,例如总是getSharedPreferences("Settings", MODE_PRIVATE)从那里调用Context返回相同SharedPreferences的对象,我可以使用来自其他来源的存储在其中的数据,我会很高兴。谢谢!

4

1 回答 1

0

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

getApplicationContext().getSharedPreferences("Settings",MODE_PRIVATE); 
于 2015-10-17T21:02:14.117 回答