Android进程二

一、IPC通信设定
1、AndroidManifest.xml文件
  一个App可以占用多个进程
  <service android:name=".MyService"
  android:process=":remote">// 独立一个进程取名remote(远程)
  Android每个进程都有一个VM

二、IBinder接口
1、使用Java Interface定义的接口,用于跨进程调用
  Android框架的IPC沟通依赖单一的IBinder接口,客户端调用IBinder接口的transact(业务)函数,透过IPC机制而调用远程的onTransact函数
2、Android源码中,Java层的IBinder接口定义于IBinder.java代码的文档里
  public interface IBinder{
  // code编码 Parcel(包裹)传出的数据 返回的数据
    public boolean transact(int code, Parcel data, Parcel replay, int flags) throws RemoteException
  }
3、IBinder两个实现类
  Binder和BinderProxy

  IBinder ---> BinderProxy(代理)
  ------------------------IPC机制
  IBinder ---> Binder
4、基本流程
  Client端BinderProxy
    |
  java ---> transact()(JNI本地模块的transact()函数) ---> Binder Driver驱动服务
                               |
     --------------------------Linux转址-----------------
    |
  Service端Binder

  <-- init()调用java -->
  c/c++ ---> execTransact() ---> onTransact() ---> IOC(实现类实现onTransact())

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。