系统Service的启动流程

来源:互联网 发布:阿里云主机试用 编辑:程序博客网 时间:2024/05/22 00:53

与Activity组件的启动方式很像,Service启动分为隐式和显式两种,对于隐式启动Service组件来说,我们只需要知道它的组件名称,而对于显示的Service组件来说,需要知道它的类名称。 
以一个后台播放音乐场景来说明: 
通过实现一个MyService来实现一个异步任务来播放后台音乐

MyActivity.java 
这里写图片描述 
这里写图片描述

MyService.java 
这里写图片描述

MyActivity组件绑定MyService的过程:

  • 1.MyActivity向ActivityManagerService发送一个绑定CounterService组件的进程间通信请求。
  • 2.ActivityManagerService发现用来运行MyService组件的应用程序进程即为MyActivity组件所运行的应用程序进程,因此,它就直接通知应用程序进程将MyService启动起来。
  • 3.MyService组件启动起来后,ActivityManagerService就请求它返回一个Binder本地对象,以便MyActivity可以通过这个Binder本地对象来和MyService组件建立连接。
  • 4.ActivityManagerService将前面从MyService组件中获得的一个Binder本地对象发送给MyActivity组件。
  • 5.MyActivity组件获得了ActivityManagerService给它发送的Binder本地对象之后,就可以通过它来获得MyService组件的一个访问接口,MyActivity组件之后就可以通过这个访问接口来使用MyService组件所提供的服务,这就相当于将MyService绑定在了MyActivity中了。
0 0
原创粉丝点击