我有一个AsyncTasks池,它将状态数据传递回执行它们的服务,但它们一直被Android杀死。
我无法使用IntentService,因为该服务正在跟踪UI和AsyncTasks使用的状态。
我如何: 1)保持服务不被杀死 2)用这个用例更好地替换服务或AsyncTask吗?
答案 0 :(得分:0)
您应该使用foreground service。如果资源不足,Android操作系统可以终止服务,但它总是会备用前台服务。
只有在内存不足时,Android系统才会强制停止服务 它必须为具有用户的活动恢复系统资源 焦点。如果服务绑定到具有用户焦点的活动, 然后它不太可能被杀死,如果宣布服务 在foreground(稍后讨论)中运行,然后几乎永远不会 杀死。
注意:您还应该考虑另一件事
警告:服务在其托管进程的主线程中运行 - service不会创建自己的线程,也不会单独运行 过程(除非您另行指定)。这意味着,如果你的 服务将进行任何CPU密集型工作或阻塞操作 (如MP3播放或网络),你应该创建一个新的线程 在服务范围内做这项工作。通过使用单独的线程,你 将降低应用程序无响应(ANR)错误的风险 应用程序的主线程可以保持专用于用户交互 与您的活动。