文档:
“请注意,与其他应用程序对象一样,服务在其托管过程的主线程中运行。”
我还检查了以下问题:如何在后台运行 - Android
这意味着UI线程将继续操作并执行服务应执行的任务?由于默认情况下,应用程序任务是在主线程上运行的,并且在没有UI的情况下将在该线程上运行,因此可以将其视为在“应用程序的背景”中运行?这个术语正确吗?或者,“在操作系统的背景下运行”更正确吗?
如果我使用了服务(不是意图服务),然后在该服务中启动一个新线程,也将被视为在应用程序的背景中运行,或者该线程将在其他过程中运行,并且被视为在操作系统的背景?
如果有人可以帮助我理解这个概念,我会很感激。
thanks不要将其视为UI线程。 将其视为主线程。 活动是在主线程上运行并具有UIS的对象。 他们更新主线程上的UI。 他们有一个复杂的生命周期,围绕屏幕上是否存在。 服务是没有UI的对象。 它们具有更简单的生命周期,该生命周期基于开始和停止。 因此,即使其他某些应用程序拥有屏幕,它们也会坚持(除非停止)。 这些东西中的任何东西都与螺纹有关。 任何类型的对象都可以启动线程,但是除非它们这样做,否则所有处理都会在应用程序的主线程上发生。
Edit2025:刚刚看到了这一投票,几年前情况发生了变化。 现在有两种类型的服务,前景和背景。 背景服务是服务的默认类型。 无论您运行什么活动,它都可以在后台存在,但是如果您的应用程序不在屏幕上时,如果您不回到前景,它将在大约两分钟内被杀死。
前台服务寿命更长。 他们总是有与它们相关联的通知,因此用户知道正在运行什么。 这些最终仍然可以被杀死以获取资源(因此您不能依靠它们永远存在或始终运行),但是它们会持续很大的时间。 如果您需要在应用程序背景一段时间时保留某些居民并运行,这就是您使用的。