Android:绑定(bind)服务和启动服务的区别

标签 android service

我正在尝试确定绑定(bind)服务和启动服务之间的主要概念(而非实现)差异。以下是要点:

  1. 绑定(bind)服务允许在 Activity 和服务之间扩展双向通信,而启动的服务不需要向客户端 Activity 返回任何结果

  2. 绑定(bind)服务将为多个客户端提供服务(只要至少有一个客户端绑定(bind)到它),而启动的服务执行单个操作然后关闭。 (我知道可以启动也绑定(bind)的服务)

    还有其他主要区别吗?

最佳答案

服务是在后台运行的组件,用于执行长时间运行的操作而无需与用户交互。例如,当用户在不同的应用程序中时,服务可能会在后台播放音乐,或者它可能会通过网络获取数据而不会阻止用户与 Activity 的交互。一个服务基本上可以有两种状态:

Started :当应用程序组件(例如 Activity )通过调用 startService() 启动它时,服务即启动。一旦启动,服务可以无限期地在后台运行,即使启动它的组件已被销毁。

绑定(bind):当应用程序组件通过调用 bindService() 绑定(bind)到服务时,服务就绑定(bind)了。绑定(bind)服务提供客户端-服务器接口(interface),允许组件与服务交互、发送请求、获取结果,甚至通过进程间通信 (IPC) 跨进程执行此操作。

enter image description here

关于Android:绑定(bind)服务和启动服务的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30408803/

相关文章:

Java通过迭代实现多个HttpURLConnections?

android - AlertDialog.Builder.setSingleChoiceItems 导致多选列表

c++ - 谁能解释一下 Android 中 C 运行时的哪些功能(通过 NDK)不受支持?

java - 安卓数据绑定(bind)。如何为生成的 *Binding 类设置布局 xml 文件

android - 键盘锁、isDeviceLocked 还是 isDeviceSecured?

java - Android boolean 定时器时间表

android - Google (Play) sleep 模式下的位置服务更新间隔变化 (Android)

android - 我可以同步停止服务吗?

Android服务onCreate被多次调用,没有调用onDestroy

c# - 使用证书调用服务:Error - "Keyset does not exist"