服务如何在Android内部运行?

时间:2017-04-18 20:46:18

标签: android multithreading service process

我了解服务在后台运行。之前我使用过Service类,我知道它的相关方法。但是,我的问题与对应于在后台运行服务的内部操作有关。

从文档: "请注意,服务与其他应用程序对象一样,在其托管过程的主线程中运行。"

我还检查了这个问题:How does a service runs in the background - Android

这是否意味着UI线程将继续运行并执行服务应该执行的任务?这可以被视为在应用程序的背景中运行吗?由于app任务默认在主线程上运行,并且服务将在没有UI的情况下在该线程上运行?那个词是否正确?或者,"在OS的背景下运行"更正确吗?

如果我使用了服务(不是IntentService),然后在该服务中启动了一个新线程,它也会被视为在应用程序的后台运行,或者该线程在不同的进程中运行并被视为正在运行在OS的背景?

如果有人能帮我理解这个概念,我会很感激。

由于

1 个答案:

答案 0 :(得分:1)

不要将其视为UI线程。把它想象成主线程。活动是在主线程上运行并具有UI的对象。他们在主线程上更新这些UI。它们具有基于屏幕与否的复杂生命周期。服务是没有UI的对象。它们具有更简单的生命周期,基于启动和停止。因此,即使其他应用拥有屏幕,它们也会一直存在(除非停止)。

这些都与线程无关。如果需要,任何一种类型的对象都可以启动一个线程,但除非它们这样做,否则所有处理都将在应用程序的主线程上进行。