IPC  进程间通信  在android中通常采用binder实现  也可以采用Socket实现  
Binder 分为三个部分  Binder服务端  Binder驱动  Binder客户端   Binder服务端每创建一个就会在binder驱动中存放一个mRemote对象 即服务端的引用  
当客户端请求这个服务的时候 客户端就会获取驱动中的mRemote对象  调用它的transact方法  这个方法会向服务端发送请求的信息  然后服务端处理请求 
mRemote挂起当前请求等待服务端通知,收到通知后继续执行客户端线程  
AIDL 就是IPC的一个典型的例子   
首先绑定一个远程服务  bindService() 传入 intent 和 回调接口  
个人理解  在执行进程间通信时不同于同一个进程间的通信,当在同一个进程通信时,直接启动服务,然后返回服务中的binder对象 之后回调接口即可  因为在同一个进程 binder对象可共享 
因此可以这样实现  可是在不同进程间通信的时候就不可以这样子了  因为不同进程间不共享同一块内存,因此需要使用binder机制进行进程间通信了  
在与远程服务连接完成后 会返回一个远程连接的代理 其实也就是Ibinder对象的代理 在代理中会有mRemote变量 然后客户端调用代理的某些方法  在代理的方法中
会调用mRemote的trancact方法  调用远程服务的这个方法  然后在服务端就调用该方法,将结果写入reply中  返回给 客户端  因为代理是一个 所以2边必须都有一样的aidl文件   
客户端中就可以获得远程服务的执行结果了  


在asInterface(Ibinder) 中  Ibinder 对象其实就是mRemote对象  只需要把这个对象封装成代理(跨进程) 返回 即可执行代理的方法  其实代理只是传入了mRemote
来执行一些方法 罢了  onTranscat 是回调函数  用于执行 transcat时获取到的数据进行解析   其他函数没什么难度