如何通过Messenger类将延迟消息发送到另一个进程

时间:2014-11-20 06:36:51

标签: android inter-process-communicat

我正在从http://developer.android.com/guide/components/bound-services.html学习Android服务, 但在通过编写一些示例代码进行练习后,我开始有以下问题:

首先,我想知道如何在Android中通过Messenger类发送延迟消息。

其次,我们为什么不在Messenger类中使用sendDelayedMsg()或sendMsgAt()等方法?

谢谢〜

1 个答案:

答案 0 :(得分:1)

我会先回答你的第二个问题,然后回答你的第一个问题,因为这可能是更合乎逻辑的解释方法。

Messenger是一个用于进程间通信的绑定器的包装器。因此,您无法直接访问目标进程上的线程处理程序。所以,你不能做像Handler.postDelayed()或Handler.postAtTime()这样的事情,你似乎在暗指你的sendDelayedMsg()和sendMsgAt()。

现在,关于您的第一个问题:您可以使用Messenger实现“发送延迟消息”,如下所示:

  1. 在您的服务类(由目标进程运行)中,创建一个Handler对象,用于从Messenger接收消息。您的Handler对象应该扩展Handler类,并在其中实现“handleMessage(Message msg)”。

  2. 您的“handleMessage(Message msg)”方法接收来自信使的消息。因此,对于要延迟的每种类型的消息(即Message.what),请通过调用postDelayed()或postAtTime()将其发布到Handler对象。换句话说,当您的目标流程/服务收到您想要延迟的消息时,它会安排该消息的延迟。