四大组件---Service
来源:互联网 发布:网络架构师年薪 编辑:程序博客网 时间:2024/06/16 21:25
AMS中创建了很多List/Map等数据结构,这些数据结构存储了service/ApplicationThread/ServiceConn对象,这些数据结构供AMS对service进行调度,这些行为发生在service_server进程
AMS持有引用进程的ApplicationThread服务的代理,使用该对象binder call到应用进程调度service的生命周期函数
应用进程内部的binder线程向主线程发送message消息,从而达到在主线程具体执行service的生命周期函数。
从进程的角度分析bindService整个过程:
bindService这个过程设计三个进程之间的通信,分别为:发起进程client 服务进程target AMS进程
Client进程: 通过getServiceDispatcher获取Client进程的匿名Binder服务端,即LoadedApk.ServiceDispatcher.InnerConnection,该对象继承于IServiceConnection.Stub; 再通过bindService调用到system_server进程;
system_server进程: 依次通过scheduleCreateService和scheduleBindService方法, 远程调用到target进程; 4: target进程: 依次执行onCreate()和onBind()方法; 将onBind()方法的返回值IBinder(作为target进程的binder服务端)通过publishService传递到system_server进程;
system_server进程: 利用IServiceConnection代理对象向Client进程发起connected()调用, 并把target进程的onBind返回Binder对象的代理端传递到Client进程;
Client进程: 回调到onServiceConnection()方法, 该方法的第二个参数便是target进程的binder代理端. 到此便成功地拿到了target进程的代理, 可以畅通无阻地进行交互.
AMS持有引用进程的ApplicationThread服务的代理,使用该对象binder call到应用进程调度service的生命周期函数
应用进程内部的binder线程向主线程发送message消息,从而达到在主线程具体执行service的生命周期函数。
从进程的角度分析bindService整个过程:
bindService这个过程设计三个进程之间的通信,分别为:发起进程client 服务进程target AMS进程
Client进程: 通过getServiceDispatcher获取Client进程的匿名Binder服务端,即LoadedApk.ServiceDispatcher.InnerConnection,该对象继承于IServiceConnection.Stub; 再通过bindService调用到system_server进程;
system_server进程: 依次通过scheduleCreateService和scheduleBindService方法, 远程调用到target进程; 4: target进程: 依次执行onCreate()和onBind()方法; 将onBind()方法的返回值IBinder(作为target进程的binder服务端)通过publishService传递到system_server进程;
system_server进程: 利用IServiceConnection代理对象向Client进程发起connected()调用, 并把target进程的onBind返回Binder对象的代理端传递到Client进程;
Client进程: 回调到onServiceConnection()方法, 该方法的第二个参数便是target进程的binder代理端. 到此便成功地拿到了target进程的代理, 可以畅通无阻地进行交互.
阅读全文
0 0
- 四大组件之Service
- Android四大组件----Service
- 四大组件之Service
- 四大组件之Service
- Android四大组件---Service
- 四大组件(Service)
- android四大组件service
- 四大组件之Service
- 四大组件之Service
- 四大组件之Service
- android四大组件---service
- 四大组件之Service
- 四大组件之service
- 四大组件之Service
- Service-四大组件之一
- android四大组件---Service
- 四大组件之Service
- 四大组件之Service
- Linux版 Matlab R2015a 的链接
- windows核心编程之线程同步与原子函数
- dubbo调用和maven依赖的区别
- iPhone x 原型适配的一些事儿
- 芯片的分类
- 四大组件---Service
- Saver保存提取
- javascript原型链详细解析(一)
- Faster-RCNN_TF代码解读7:VGGnet_train.py
- 秒杀系统架构优化思路
- 笔记
- mysql表损坏修复
- Leetcode OJ 77 Combinations [Medium]
- Linux笔记之配置1:配置主机名