为什么服务运行在uthread上?



我们知道在Android中服务运行在UI线程上。如果我们想要执行一些长时间运行的操作,我们需要从该服务创建我们自己的线程,以避免冻结UI线程。

但是为什么服务不自动完成呢?为什么默认情况下它不在工作线程上工作?android团队选择在主线程中运行服务有什么特别的原因吗?谢谢你。

p。S-我知道由于所有的限制,服务不再被使用。这个问题和这个没有关系。我知道IntentService也有同样的功能,虽然它已经被弃用了

服务在UI线程上运行

不,他们没有。

在Java和Kotlin中,对象,如Service的子类,不在线程上运行。Java方法和Kotlin函数在线程上运行。

我假设你的意思是"Service的几个生命周期方法,如onCreate()onStartCommand(),在主应用程序(ui)线程上运行"。

但是为什么服务不能自动完成呢?

一个单独的线程并不总是必要的。ServiceAPI是在16年前创建的。在那个时候,移动cpu很慢,线程/同步代表了大量的开销。 另外,要记住有很多可能的线程模型(单后台线程,简单线程池等)和很多可能的方法来应用它们。选择一种实现可能简化问题的一个子集开发者和添加更多的开销的人需要别的东西。

我知道服务不再使用了,因为所有的限制

服务在Android中广泛存在。

最新更新