我的应用服务一直被杀死

时间:2016-03-11 01:40:53

标签: java android android-asynctask

我有一个AsyncTasks池,它将状态数据传递回执行它们的服务,但它们一直被Android杀死。

我无法使用IntentService,因为该服务正在跟踪UI和AsyncTasks使用的状态。

我如何: 1)保持服务不被杀死 2)用这个用例更好地替换服务或AsyncTask吗?

1 个答案:

答案 0 :(得分:0)

您应该使用foreground service。如果资源不足,Android操作系统可以终止服务,但它总是会备用前台服务。

  

只有在内存不足时,Android系统才会强制停止服务   它必须为具有用户的活动恢复系统资源   焦点。如果服务绑定到具有用户焦点的活动,   然后它不太可能被杀死,如果宣布服务   在foreground(稍后讨论)中运行,然后几乎永远不会   杀死。

注意:您还应该考虑另一件事

  

警告:服务在其托管进程的主线程中运行 -   service不会创建自己的线程,也不会单独运行   过程(除非您另行指定)。这意味着,如果你的   服务将进行任何CPU密集型工作或阻塞操作   (如MP3播放或网络),你应该创建一个新的线程   在服务范围内做这项工作。通过使用单独的线程,你   将降低应用程序无响应(ANR)错误的风险   应用程序的主线程可以保持专用于用户交互   与您的活动。