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

2024-03-21

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

问题是“当一切都可以通过 Android 中的后台线程完成时,为什么我们还需要服务?” Service运行在主线程中,为什么我们需要一些在主线程中运行但在后台运行的东西呢? 像音乐播放这样的例子也可以在后台线程中完成,那么为什么我们需要服务呢?

请让我知道是否应该在另一个论坛上询问这个问题。


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

看我的回答绑定服务 https://stackoverflow.com/questions/41540312/how-to-make-sure-service-is-not-killed/41540930#41540930在服务和活动之间进行通信。当您的音乐播放器运行时,您必须在通知面板上保留通知。

UPDATE

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我们需要 Android 中的服务?音乐播放也可以通过后台线程来完成 的相关文章

  • 在代码中旋转按钮(或其中的文本)

    我必须通过编码随机旋转按钮 或里面的文本 它是相同的 API级别低于11是否有button setRotate x 好吧 看了一下 答案是 很复杂 您可以使用旧的动画框架旋转按钮 例如像这样 Button button Button fin
  • 导航组件参数默认值

    在导航组件中 将参数从第一个片段发送到第二个片段时 默认值不会从导航图中获取哪个集合 这是我的代码 导航图 xml
  • 游标索引越界异常

    打开后出现光标索引越界错误 数据库 请任何人告诉我如何打开现有数据库 sqllite Android 我想在数据库上触发一个选择查询 检索一些信息 public void getPatient SQLiteDatabase db Strin
  • 如何在 Android 应用程序中单击按钮时打开 Gmail Compose?

    当我的 Android 应用程序中单击按钮时 我尝试打开 Gmail 撰写屏幕 我需要 Google 提供的 API 密钥吗 或者我需要在按钮 onClickListener 中做什么 任何形式的见解都非常值得赞赏 正如 JeffC 指出的
  • 我的 Android 设备需要安装哪个驱动程序才能运行我的应用程序?

    我购买了 intex mobile 来在真实设备中测试我的 Android 应用程序 然而 该设备不存在于 OEM USB 驱动程序列表中 android 提供的设备列表中 我检查了 intex 官方网站 但不确定到底需要安装哪个驱动程序
  • 无法在云控制台中启用 Maps SDK for Android

    我在云控制台中启用适用于 Android 的 Maps SDK 时遇到此问题 https console cloud google com https console cloud google com 它会抛出以下错误 附截图 我收到错误消
  • 使用 RxJava 限制吞吐量

    我现在遇到的情况很难解释 所以我会写一个更简单的版本来解释这个问题 我有一个Observable from 它发出一系列由ArrayList文件数量 所有这些文件都应上传到服务器 为此 我有一个函数可以完成这项工作并返回一个Observab
  • Android BLE 扫描在后台几分钟后停止

    当我为公司开发新冠肺炎接触者追踪应用程序时 我在后台遇到了 Android 扫描停止问题 这是我尝试过的 添加前台服务 禁用手机中所有与电池相关的优化选项 启用后台运行的应用程序 测试设备 搭载 Android 10 的 Galaxy S2
  • 将图像保存到内部存储器并将出现在图库中

    我搜索了很多与我的问题相关的问题 是否有办法将图像存储在内存中并且它也应该出现在图库中 这是完全有可能的 我以前也这么做过 在将图像保存到内存 或称为应用程序文件夹等 之前 您最好设置Context MODE WORLDREADABLE 虽
  • Android httpclient文件上传数据损坏和超时问题

    我在 Android 中上传图像时遇到问题 我正在使用 apache httpmime 4 1 lib 代码是这样的 MultipartEntity reqEntity new MultipartEntity HttpMultipartMo
  • 截图显示黑色

    我正在拍摄快照并创建缩略图 然后共享此图像 但缩略图显示全黑 我使用了以下代码 Bitmap bitmap View v1 v getRootView v1 setDrawingCacheEnabled true bitmap Bitmap
  • 有没有办法在多个嵌套的 RecyclerView 之间共享同一个 LayoutManager

    我正在开发一个显示游戏列表的应用程序 在每个游戏的 itemView 内 我还有一个要显示的视频列表 预览和结构如下 我部署了一个RecyclerView作为窗口根视图 然后对于视频 我使用网格样式的RecyclerView来显示 所以这里
  • 如何在 kotlin 中检查 lambda 空值

    在 Kotlin 中如何检查 lambda 是否为空 例如 我有这样的签名 onError Throwable gt Unit 我如何区分它的默认值是应用于主体还是应用于此函数的值 您无法测试 lambda 的主体是否为空 因此它不包含源代
  • 从Android客户端登录appengine

    我正在尝试登录应用程序引擎并访问应用程序引擎中的用户服务API 基本上我希望能够看到谁登录了我的 servlet 我正在使用从 android 获取 authtoken 然后从应用程序引擎获取 ASID 或 SACID cookie 的身份
  • 将 Crashlytics 集成到图书馆项目

    我有一个图书馆项目 自定义视图库项目 它没有任何活动 服务 我想将 Crashlytics SDK 集成到我的库中 当我尝试通过 Android Studio 的 Crashlytics 插件 工具栏中的图标 添加它时 它只是停留在 Che
  • 应用程序中空指针异常[重复]

    这个问题在这里已经有答案了 我正在尝试在我的应用程序中实施应用程序内计费 我写了这段代码 public class Settings extends PreferenceFragment ServiceConnection mService
  • Application.onLowMemory() 未调用

    我创建了自己的应用程序类 我尝试调试它 代码在 Application onCreate 处停止 但不会在 onLowMemory 处停止 为了测试该场景 我打开了许多其他高内存应用程序 我看到的是调试会话终止 在 Eclipse 中 并且
  • 在android中使用BaseActivity的不同活动中的通用标头

    我想编写一次代码并在不同的活动中使用 我创建了一个Base Activity class为了那个原因 此外 不同活动中所有布局的标题都是相同的 我在以下人员的帮助下做到了这一点
  • Android Jasper 报告

    Jasper Reporting 可以集成到 Android 应用程序中吗 我正在尝试从 jrxml 文件生成 PDF CSV 文本和 XLS 报告 但是 我没有看到 Android SDK 支持 net sf jasperreports
  • 查询联系人 - 有时返回空游标

    我正在尝试查询联系人的显示名称 Override public void onActivityResult int requestCode int resultCode Intent data switch requestCode case

随机推荐

  • 在for循环中取消NSOperation?

    我正在尝试使用在后台线程上实现搜索NSOperation on iOS 我不想子类化NSOperation所以这就是我正在做的 searchQueue cancelAllOperations NSInvocationOperation op
  • 成本函数和梯度似乎有效,但 scipy.optimize 函数无效

    我正在为 Andrew NG Coursera 课程编写 Matlab 代码 并将其转换为 python 我正在研究非正则化逻辑回归 在编写梯度和成本函数后 我需要类似于 fminunc 的东西 经过一番谷歌搜索后 我找到了几个选项 它们都
  • 防止 BoxLayout 扩展子项

    我想在 JPanel 内垂直堆叠一些 JComponent 以便它们堆叠在顶部 任何额外的空间都在底部 我正在使用 BoxLayout 每个组件都包含一个 JTextArea 必要时应允许文本换行 因此 基本上 我希望每个组件的高度是显示
  • 上传的日文和中文文件名编码问题

    我目前正在使用jQuery 文件上传 https github com blueimp jQuery File Upload 我可能会上传一些带有日文或中文文件名的文件 在浏览器的调试模式下我可以看到文件名例如是 疲 様 txt 或 测试文
  • 为什么链接器在未在任何地方指定的情况下寻找 python36_d.lib ?

    我正在编译Python C 扩展模块 https docs python org 3 6 extending building html使用 VS 2017 和 SWIG 扩展模块 pyd 文件 的链接器 用于调试配置 的命令是 OUT D
  • 将“\r\n”替换为“\n”

    我有一些文本数据打印出实际字符 r n 总共四个字符 我想用单个 n 字符替换这四个字符 但我似乎无法让 Python 为我做这件事 我目前正在尝试 mytext replace r n n 但这只是打印出 n 两个字符 而不是一个 我觉得
  • Objective-C 中的标记指针

    While 回答这个问题 https stackoverflow com a 20362087 115200我注意到现代 Objective C 运行时使用标记指针 这迈克 阿什 Mike Ash 的文章及其评论 http www mike
  • Linux下的Topshelf和.net core

    我有一个简单的应用程序 它使用 topshelf 作为服务启动 它看起来很简单 HostFactory Run x gt x Service
  • 在 Azure 逻辑应用中执行存储过程 - 错误网关错误

    当我从逻辑应用设计器执行存储过程时 出现严重的网关错误 我试图调用的存储过程 create procedure test as select from testable 测试表包含 100000 多行 存储过程的结果放置在Blob FTP中
  • 将宏参数传递给其他宏

    我是生锈新手 我正在尝试创建宏 它需要一个缓冲区 然后从中解码一些数据并创建给定的变量列表 如果发生错误 那么它应该打印错误并继续 因为我将在接收缓冲区的循环中调用它 像这样的东西 for bin ref in bufs extract b
  • 使用 PHP 进行正则表达式电话号码验证

    这是关于我之前提出的问题的另一个问题昨天 https stackoverflow com questions 18094180 ignore entered text after a certain length php jquery se
  • 如何在 Swift 中查找列表项的索引?

    我正在尝试寻找一个item index通过搜索list 有人知道该怎么做吗 我看到有list StartIndex and list EndIndex但我想要类似 python 的东西list index text 由于 swift 在某些
  • Spring Data cassandra 存储库上的插入和保存性能缓慢

    我正在尝试使用 spring 将 1500 条记录插入 cassandra 中 我有一个 POJO 列表 其中包含这 1500 条记录 当我调用 saveAll 或插入此数据时 需要 30 秒才能完成此操作 有人可以建议一种方法让我更快地完
  • start() 已经被调用。第二次调用将被忽略。

    在调用 start 后 在组件 StandardEngine Catalina StandardHost localhost StandardContext Account 上调用 start 方法 第二次调用将被忽略 请帮助我解决这些错误
  • 为什么 pandas df.loc + lambda 不起作用?

    I have created pandas frame from csv file And I want to select rows use lambda But it does not work I use this pandas ma
  • 无法运行程序“...”错误=2,没有这样的文件或目录(java)

    我正在尝试制作一个 java 程序来在我的 macbook 上建立 SSH 连接 它提示我输入用户名 然后是 IP 地址 然后应该执行 ssh username ip 下面是我的代码 import java io BufferedReade
  • 使用 Selenium 时如何选择要启用的 Chrome 扩展程序 [重复]

    这个问题在这里已经有答案了 我正在使用 Selenium Web 驱动程序使用 Chrome 作为浏览器来开发自动化测试 我为此使用Python 我的 Chrome 浏览器上有一个扩展 我希望在 Selenium 打开 Chrome 时启用
  • 如何实现推荐引擎?

    请耐心等待我的写作 因为我的英语不熟练 作为一名程序员 我想了解在推荐系统或相关系统下实现的算法或机器学习智能 例如 最明显的例子来自亚马逊 他们有一个非常好的推荐系统 他们会知道 如果你愿意this 你可能还喜欢that 或者其他类似的东
  • 将 DB 变量中的字节值加载到 16 位寄存器中(符号或零扩展字节)

    我正在使用 MASM 编译器和 DOSBOX 我想将变量的值保存到寄存器中 我想保存num1值转化为cx登记 我怎样才能做到这一点 MODEL SMALL STACK 50H DATA num1 db 5 NL DB 0DH 0AH msg
  • 为什么我们需要 Android 中的服务?音乐播放也可以通过后台线程来完成

    我在一次采访中被问到这个问题 我不确定这是否是问这个问题的正确论坛 因为它不涉及任何代码 而是对 android 概念的理解 问题是 当一切都可以通过 Android 中的后台线程完成时 为什么我们还需要服务 Service运行在主线程中