ril.java:
send(RILRequest rr)
msg.sendToTarget();// class Message in[os/message.java]
target.sendMessage(this) //public class Handler in[os/handler.java] ##一直管到下面另外的注释指明的函数为止##
sendMessageDelayed(msg, 0);
sendMessageAtTime(msg, SystemClock.uptimeMillis() + delayMillis);
enqueueMessage(queue, msg, uptimeMillis); // 在 enqueueMessage 中有如下实现
{msg.target = this;
if (mAsynchronous) {
msg.setAsynchronous(true);//设置异步模式
}
return queue.enqueueMessage(msg, uptimeMillis);//这个函数的实现很重要; in class MessageQueue [MessageQueue.java]
}
关于 final boolean enqueueMessage(Message msg, long when) 函数 //in class MessageQueue [MessageQueue.java]
它调用了
if (needWake) {
nativeWake(mPtr); // 唤醒了SMS的发送的enqueue ,这才开始真正发送短信。那真正发送短信最后的的那个动作又是在哪儿实现的呢?让我们进一步追踪……
有一点可以肯定的是,这个跟具体的平台的实现方案是有很大的直接关系的。也许这些跟modem有关的厂商,把实现细节封装好了。但是,即便如此,我们也依然可以找到,最后调用的那个“可见”的函数。