服务如何在后台运行-Android

服务如何在后台运行-Android,android,service,Android,Service,我在今天的采访中被问到这个问题 什么是服务? 我回复说,这个服务是安卓系统的基本组件,它没有用户界面,在后台运行 服务是否在主线程上运行? 没有 那么它是如何在后台运行的呢? 我一片空白。如果服务在ui线程中运行,有人能解释一下它是如何在后台运行的吗 谢谢。服务在UI线程上运行。要“在后台”运行服务任务,您需要在该服务中生成一个新线程服务上下文中的“在后台”可以被视为“可以在没有UI的情况下运行”,但这并不意味着它在自己的线程中运行。引自: 请记住,如果您确实使用了服务,它仍然会在您的应用程序

我在今天的采访中被问到这个问题

什么是服务? 我回复说,这个服务是安卓系统的基本组件,它没有用户界面,在后台运行

服务是否在主线程上运行? 没有

那么它是如何在后台运行的呢?

我一片空白。如果服务在ui线程中运行,有人能解释一下它是如何在后台运行的吗


谢谢。

服务在UI线程上运行。要“在后台”运行服务任务,您需要在该服务中生成一个新线程服务上下文中的“在后台”可以被视为“可以在没有UI的情况下运行”,但这并不意味着它在自己的线程中运行。

引自:

请记住,如果您确实使用了服务,它仍然会在您的应用程序中运行 默认情况下,应用程序的主线程,所以您仍然应该创建一个新的 服务中的线程(如果它执行密集或阻塞) 行动


“UI线程”基本上就是你的应用程序使用的主线程,运行它的UI。它完全不限于运行UI。

服务在UI/主线程上运行。@Blackbelt你的意思是说它们不在后台运行?在后台意味着其他东西。我想,文档对后台的含义是,服务能够在没有用户交互的情况下运行,即使所有活动都暂停了,“服务是一个在后台运行的组件,没有与用户直接交互。由于服务没有用户界面,因此它不绑定到活动的生命周期。”摘自本教程:它是文档的副本/过去。不过,它并没有说它会产生一个不同的线程,使服务能够正常运行。但是他们仍然不应该使用“后台”这个词,那么,如果服务在UI线程上运行,它对我有什么好处呢?如果我需要创建一个新线程,为什么我不在主程序上创建我的线程呢?在这种情况下,服务的好处是什么?服务的好处是,它可以在没有可见活动(UI、视图)的情况下运行,因此用户可以离开应用程序并转到主屏幕,操作仍将继续。当它完成时,您还可以处理结果,例如将其存储在某处。在活动中运行线程的情况下,活动将被破坏,您将丢失(或泄漏)可能导致崩溃/内存不足异常的上下文。