使用服务存储全球数据Android应用程序

时间:2014-01-16 14:41:08

标签: singleton global-variables android-sqlite android

我有一个Android应用程序,包含几个活动/片段和一个服务。在其中一个活动中,我创建了一个新变量,我需要从大多数其他活动和服务中访问该变量。处理此问题的最佳方法是什么,即使应用程序已关闭并重新打开,该值仍然存在。目前我将变量传递给我的服务,然后每个活动都必须使用Messenger来查询服务并获取值。我想知道是否有更有效的方法来执行此操作,并不要求每个活动绑定到服务以获取一个值。

可能的解决方案: 1. Singleton - 应用程序关闭后会存活吗? 2.扩展应用程序并将值存储在那里 - 特别是对于这样一个简单的用例,似乎不鼓励这样做。 3.在本地对数据库进行数据库,然后在需要时进行查询,可能没问题,但可能也有些过分。 4. 1和3的组合,其中我有一个单例,如果它有它,则返回值,如果没有,那么它将查询db并获取值。这样,只要应用程序正在运行,就只需要查询一次db,并且该值将通过app关闭来保持。

有什么想法吗?

谢谢, 森

1 个答案:

答案 0 :(得分:1)

  

Singleton - 这会在申请被关闭后继续存在吗?

只要你的过程存在,它就会存在。

  

扩展应用程序并将值存储在那里 - 特别是对于这样一个简单的用例,似乎不鼓励这样做。

在这种情况下,它不会增加单例选项的值。

  

在本地对该字段进行数据库分析,然后在需要时进行查询,可能没问题,但也可能过度

如果您需要数据来终止您的进程,您将需要以某种方式保留它(数据库,文件,SharedPreferences)。但是,您的选项4(使用单例缓存)将更有效。