在永无止境的服务中使用全局变量

时间:2018-04-06 06:39:46

标签: java android android-service

我创建了一个永无止境的service,但我不确定我对此service所做的事情是否正常。我声明了像static String list_contact这样的全局变量 并使用db onCreate方法填写列表。我想避免每次都从数据库中检索data,因为我需要快速地与列表进行比较。但是,将data存储在Service的全局变量中可能会出现问题。另外,我需要另一个包含数千个数据的列表。如果它不合适,我可以在memoryspeed之间找到用于检索数据的折衷方案吗?感谢。

1 个答案:

答案 0 :(得分:0)

将静态变量放在Service中并假设该服务将永远运行,这不是一个好主意。

最大的缺点是,服务不会永远在后台运行,从Android O开始。最新版本对后台处理应用更多限制,并在应用程序投放到后台几分钟后终止您的服务。

您可以实现Object pool pattern,它将频繁访问的数据存储在Object中。这并不需要运行服务并且可以满足您的需求。您需要确保不在这些对象中以明文形式维护敏感数据。

或者,您也可以阅读描述Android缓存的this帖子。