android - 为什么我们需要android中的服务?音乐播放也可以通过后台线程完成

标签 android service

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

问题是“当一切都可以由 Android 中的后台线程完成时,为什么我们需要服务?” 服务在主线程中运行,为什么我们需要在主线程中运行但在后台运行的东西? 音乐播放等示例也可以在后台线程中完成,那么我们为什么需要服务。

请让我知道是否应该在另一个论坛中提出这个问题。

最佳答案

服务: 服务就像 Activity 。但它不需要 UI 即可使用。而当线程从 Activity 中创建时,线程将运行直到 Activity 结束。所以,如果你在线程中播放音乐,它就会运行。但是当 Activity 结束时它会崩溃,而当您实现从服务播放音乐时它将运行整个服务的生命周期。

看我的回答boundservice在服务和 Activity 之间进行通信。当您的音乐播放器运行时,您必须在通知面板上保持通知。

更新

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

关于android - 为什么我们需要android中的服务?音乐播放也可以通过后台线程完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43117812/

相关文章:

android-更改列表的排序

android - 打开带有 Google Play 商店链接的 Android 应用

android - 如果被杀死如何重启android服务

angular - Angular 2 服务的清理代码

web-services - HTTP 上的 XML 和 HTTP 上的 SOAP 之间的区别

java - 将按钮的外观更改为圆形按钮

android - 显示为整圆的矢量绘图

android - gradle项目中输入流不能为空异常

windows - Windows 服务 : System.Net.WebException 中的 WCF 主机:远程服务器返回错误:(404) 未找到

c# - 无法从命令行或调试器启动服务