美文网首页
Android四大组件Service

Android四大组件Service

作者: WilsonMing | 来源:发表于2021-09-09 16:25 被阅读0次

    Service

    三种不同的服务类型

    • 前台:前台服务执行一些用户能注意到的操作,如播放音乐
    • 后台:后台服务执行用户不会直接注意到的操作。如下载
    • 绑定:当应用组件通过调用 bindService 绑定到服务时,服务即处于绑定状态。绑定服务会提供客户端-服务器接口,以便组件与服务进行交互、发送请求、接收结果,甚至是利用进程间通信 (IPC) 跨进程执行这些操作。仅当与另一个应用组件绑定时,绑定服务才会运行。多个组件可同时绑定到该服务,但全部取消绑定后,该服务即会被销毁。

    Service生命周期

    image.png

    支持绑定Service的三个组件

    • Activity
    • Services(没错,服务绑定服务)
    • ContentProviders
    • BroadcastReceiver不能绑定Service

    创建绑定服务通信

    • 扩展 Binder 类
      如果服务只是同个进程通信,应优先采用这种方式。您不使用这种方式创建接口的唯一一种情况是:其他应用或不同进程占用了您的服务。

    • 使用 Messenger
      这是执行进程间通信 (IPC) 最为简单的方式,因为 [Messenger](https://developer.android.google.cn/reference/android/os/Messenger) 会在单个线程中创建包含所有请求的队列,这样您就不必对服务进行线程安全设计。

    • 使用 AIDL
      大多数应用不应使用 AIDL 来创建绑定服务,因为它可能需要多线程处理能力,并可能导致更为复杂的实现。因此,AIDL 并不适合大多数应用,本文也不会阐述如何将其用于您的服务。如果您确定自己需要直接使用 AIDL

    其他

    • Service默认在主线程运行
    • 从Android5.0开始如果使用隐式 Intent 调用 bindService(),则系统会抛出异常
    • 您可以通过添加 android:exported 属性并将其设置为 false,确保服务仅适用于您的应用。这可以有效阻止其他应用启动您的服务,即便在使用显式 Intent 时也如此。
    • IntentService如果您不要求服务同时处理多个请求,此类为最佳选择

    相关文章

      网友评论

          本文标题:Android四大组件Service

          本文链接:https://www.haomeiwen.com/subject/kljbwltx.html