Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么我们需要安卓系统的服务?音乐播放也可以通过背景线程完成_Android_Service - Fatal编程技术网

Android 为什么我们需要安卓系统的服务?音乐播放也可以通过背景线程完成

Android 为什么我们需要安卓系统的服务?音乐播放也可以通过背景线程完成,android,service,Android,Service,我在一次采访中被问到这个问题。我不确定这是否是提出这个问题的合适论坛,因为它不涉及任何代码,而是对android概念的理解 问题是‘当所有的事情都可以通过安卓系统的后台线程来完成时,我们为什么需要一项服务?’ 服务在主线程中运行,为什么我们需要在主线程中但在后台运行的东西? 像音乐播放这样的例子也可以在后台线程中完成,那么为什么我们需要一个服务呢 请让我知道是否应该在其他论坛中询问此问题。服务: 服务就像活动。但它不需要UI来处理。而当从活动创建线程时,线程将一直运行,直到活动存在。因此,如果在

我在一次采访中被问到这个问题。我不确定这是否是提出这个问题的合适论坛,因为它不涉及任何代码,而是对android概念的理解

问题是‘当所有的事情都可以通过安卓系统的后台线程来完成时,我们为什么需要一项服务?’ 服务在主线程中运行,为什么我们需要在主线程中但在后台运行的东西? 像音乐播放这样的例子也可以在后台线程中完成,那么为什么我们需要一个服务呢

请让我知道是否应该在其他论坛中询问此问题。

服务: 服务就像活动。但它不需要UI来处理。而当从活动创建线程时,线程将一直运行,直到活动存在。因此,如果在线程中播放音乐,它将运行。但当活动结束时,它将崩溃,而当您实现从服务播放音乐时,它将在服务的整个生命周期中运行

请参阅我的答案,以便在服务和活动之间进行沟通。当您的音乐播放器运行时,您必须在通知面板上维护通知

更新


当你使用背景线程播放音乐时,即使应用程序关闭,音乐也会播放。你的背景线程将成为孤儿院线程。您无法控制音乐播放器的状态。然而,当您使用该服务时,音乐会播放,当应用退出时,音乐不会成为孤儿院服务。当您重新创建应用程序时,您可以与音乐播放器通信,而后台线程则不能。

通常,如果我们想要运行作业,即使用户没有与应用程序交互,我们也使用服务,在您的示例中,我们在服务内启动一个新线程,而不占用主线程,并将服务优先级设置为前台(以便系统知道用户持续了解服务)我们还附加了状态栏通知,这样即使应用程序处于后台,服务也可以直接侦听事件检查我的更新应答通知也可以由活动维护。音乐可以由后台线程播放。问题是我们为什么需要服务。你是什么意思@zeekHuge@Noorul:我的坏!我的坏支持进程间通信。该服务是一个围绕活动资源的Android包装器。当然,您可以在活动甚至应用程序中播放后台线程中的音乐,但除非您在前台有活动或服务,否则您的应用程序进程可能随时被终止。因此,您的音乐也会随之消亡。