为什么Android服务在UI线程上运行?

4

http://developer.android.com/guide/components/services.html

页面一开始就说服务用于在后台运行长时间任务。稍后在“警告”中,它说它们在UI线程上运行,并且任何密集的工作都应该在单独的线程中完成,例如放置在IntentService的“onHandleIntent”回调中的代码。
如果onHandleIntent中的代码是服务的长时间任务,并且在后台线程中运行,为什么他们会说服务在UI线程上运行?
1个回答

2
这其中有多个原因:
  1. UI线程是处理事件和绑定的方式,更容易理解如何与服务交互。通常已经在UI线程上完成,因此也更容易启动服务功能。
  2. 服务是一个没有任何UI的组件,因此相比活动使用的内存更少,并且与活动相比,发生内存泄漏的几率也更小。
  3. 服务可以在前台运行,这使得当用户转到其他应用程序时,它被杀死的机会更小。
  4. 还有一个IntentService,它有一个仅在后台线程上运行的函数(称为“onHandleIntent”),如果您希望轻松执行后台任务,则可以使用该函数。
  5. 谷歌不会强制要求您以某种方式工作,而是让您决定如何以及何时在服务上执行操作。
  6. 它有自己的生命周期,不受UI影响。它更受资源使用和操作系统决策的影响,当然也受开发者的选择影响。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接