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

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

该页面首先说服务用于在后台运行长期任务.稍后在“警告:”中,它表示它们是在UI线程上运行的,任何密集的工作都应该在一个单独的线程中完成,就像置于IntentService的“onHandleIntent”回调中的代码一样.

如果onHandleIntent中的代码是服务的长期任务,并且在后台线程中运行,为什么他们说服务在UI线程上运行?

最佳答案 这有多种原因:

> UI线程是处理事件和绑定的方式,更容易理解如何与服务进行交互.这通常已经在UI线程上完成,因此在服务上启动函数也会更容易.
>该服务是一个没有任何UI的组件,因此与活动相比,它使用的内存更少,与活动相比,内存泄漏的可能性也更小.
>该服务可以在前台运行,使其在用户转到其他应用程序时被杀的可能性更小.
>如果您希望轻松执行简单的后台任务,还有一个IntentService,它具有仅在后台线程上运行的功能(称为“onHandleIntent”).
> Google不会强迫您以某种方式工作,而是让您决定如何以及在服务上执行什么.
>它有自己的生命周期,不受UI的影响.它受资源使用和操作系统决策以及开发人员选择的影响更大.

点赞