永远在线的Android服务是不是反模式?

时间:2011-07-27 19:21:01

标签: android android-service

我理解为什么永远在线的服务通常是Android中的反模式,但我的应用程序似乎真的是在乞求:

首次加载时,应用程序必须通过数据库中的数千个小实体来构建初始状态。没有太多数据被带入内存(大多数是稍后延迟加载),但第一次扫描是应用程序的性质不可避免的。使用慢速硬件和大数据集,此扫描最差时间为6-7秒,平均值大约为3.该应用程序是“短脉冲使用”类型的东西,因此这些重复负载实际上是不可取的。

我认为这要求后台服务永久存活并保持该状态,从而避免加载时间。它总是准备被杀死,而不是在前台,所以如果系统或用户决定将它们用于服务,那么不会造成任何伤害。但是如果服务保持平静,应用程序将立即启动,在我的情况下,这对用户体验有很大帮助。

我还错吗?

3 个答案:

答案 0 :(得分:2)

  

我认为这要求后台服务永久存活并保持该状态,从而避免加载时间。

正如英国人所说,笨蛋。

  

首次加载时,应用程序必须通过数据库中的数千个小实体来构建初始状态。

然后解决这个问题。要么简化这项工作,要么以较简单的形式保存初始状态以供以后重用(例如,JSON)。

如果您可以使用RAM中保存的此工作的缓存结果,则可以使用此工作的缓存结果,该结果保存在易于读取的持久性数据中结构

答案 1 :(得分:1)

“永远在线”服务本质上就像一个守护进程,Android手机上有很多服务永远不会关闭。

在这种情况下,似乎更好的解决方案是简单地设置一个启动屏幕和/或等待对话框,直到数据加载为止。当应用程序未运行时占用资源似乎是一个坏主意,因此当用户最终打开它时应用程序将加载更快。如果应用程序的平均使用量远小于加载时间,那么以某种方式加速扫描可能会更好。

答案 2 :(得分:0)

人们使用taskkillers来杀死这类服务。我的观点是,当您让用户知道您的服务运行的原因时(比如,这会加快应用程序),他会理解它而不是杀死它。您还可以添加一个选项来使用该服务。