4.09Android学习

一、今日学习内容

Android Binder的原理与使用

Binder是安卓中实现IPC(进程间通信的)常用手段,四大组件之间的跨进程通信也是利用Binder实现的,Binder是学习四大组件工作原理的的一个重要基础。 

Binder的使用

在介绍Binder原理之前,我们先来看看在安卓中怎么使用Binder来进程间通信。 在使用之前我们先来介绍Binder的几个方法:

1
public final boolean transact(int code, Parcel data, Parcel reply, int flags)
1
protected boolean onTransact(int code, Parcel data, Parcel reply, int flags)

这两个方法分别代表了客户端和服务端,transact用来发送消息,onTransact负责接收transact传过来的消息,这一点很容易理解。

  • code 方法标识符,在相同进程中,我们很容易的通过方法调用来执行我们的目标方法,但是在不同的进程间,方法调用的方式就不能再用了,所以我们使用code来表示远程调用函数的标识。这个标识必须介于FIRST_CALL_TRANSACTION(0x00000001)和LAST_CALL_TRANSACTION(0x00ffffff)之间。
  • data Parcel类型的数据包,要传给客户端的请求参数。
  • reply 如果客户端需要返回值,则reply就是服务端返回的数据。
  • flags 用来区分这个调用是普通调用还是单程调用,普通调用时,Client端线程会阻塞,直到从Server端接收到返回值,若flag==IBinder.FLAG_ONEWAY,则这次调用是单程调用,Client在传出数据后会立即执行下一段代码,此时两端异步执行,单程调用时函数返回值必须为void (也就是单程调用必须舍弃返回值,要返回值就必须阻塞等待)

二问题

不能熟练使用

三、明天继续学习binder的有关内容

原文地址:https://www.cnblogs.com/zyljal/p/14909776.html