安卓开启多线程方式
android中四大组件增加android:process属性即可开启多进程。
“:”的含义是指在当前的进程名前面附加上当前的包名,并且以“:”的进程属于当前应用的私有进程,其他应用组件不可以和它跑在同一个进程中。不以“:”开头的进程属于全局进程,其他应用通过ShareUID方式和它跑在同一进程中。
AIDL通信分析
主要实现思路
客户端:
绑定服务器
服务端:
完成AIDL接口工作
根据一个小demo分析
- 服务端
build 服务端项目以后gen目录下会生成IBookManager.java文件。 复制到客户端去。
- 客户端
客户端将一本bookName为“xiaofang”的书发送服务端以后获得bookName为“xiaoxiao”的书
DESCRIPTOR
binder的唯一标识
asBInder
返回Binder对象
asInterface(android.os.IBinder obj)
将服务器的Binder转换成客户端的所需要的AIDL接口对象,这种转换过程是区进程的,如果客户端和服务端处于同一进程,返回的是Sub对象,否则返回的Sub.Proxy的对象
onTransact
运行于服务端中的Binder线程池中,客户端发起的跨进程处理通过系统底层封装后由该方法处理;如果返回false,客户端请求会失败。
ps:感谢任玉刚的艺术探索书籍,动手实践得到的知识积累