RILJ发送子线程需要关注两点:
1、如何把数据发送到mSenderThread中;
2、mSenderThread是如何把请求发送给RIL的。
在创建mSenderThread线程的时候,先是通过getLooper得到子线程的Looper,
然后用这个Looper去创建了Handler对象,因此得到的这个Handler对象就是子线程的Handler,也就是RILSender对象。
4.1 Send方法
各种发送消息的方法最后都要通过send方法来发送,例如进行拨号, dial方法如下,
@Override
public void
dial(String address, int clirMode, UUSInfo uusInfo, Message result) {
RILRequest rr = RILRequest.obtain(RIL_REQUEST_DIAL, result);
rr.mParcel.writeString(address);
rr.mParcel.writeInt(clirMode);
if (uusInfo == null) {
rr.mParcel.writeInt(0); // UUS information is absent
} else {
rr.mParcel.writeInt(1); // UUS information is present
rr.mParcel.writeInt(uusInfo.getType());
rr.mParcel.writeInt(uusInfo.getDcs());
rr.mParcel.writeByteArray(uusInfo.getUserData());