与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中了。
转载请注明原文地址: https://ju.6miu.com/read-1305524.html