2

我创建了一个架构,其中一个进程通过 IPCA与另一个进程通信。B

A运行粘性服务。B运行粘性服务。

A服务绑定到B服务。

当绑定成功时,

  • 对于从 A 到 B 的请求,A 创建:
mRequestMessenger = new Messenger(service); //service comes from onServiceConnected(..., IBinder service)
  • 对于从 B 到 A 的答案,A 创建:
//create the handler thread, start it
mResponseHandlerThread = new HandlerThread(mModuleName);
mResponseHandlerThread.start();
    
//Set thread as looper of ResponseHandler
mResponseHandler = new ResponseHandler(mResponseHandlerThread.getLooper()); //ResponseHandler is a Handler
    
//Set ResponseMessenger into messenger to receive callback
mResponseMessenger = new Messenger(mResponseHandler);

A收到来自 的响应时B,首先记录接收到的android.os.Message对象实例来处理它。此消息具有“何时”字段,它显示从 发送的B消息和在 接收的消息之间的延迟A

在大多数情况下,when 的值在 0ms 或 -1ms 左右(由于计算导致的负值 : createdtime - now) 对于非常罕见的情况,消息似乎卡住了,直到某些事情解除了这种情况。

日志显示:

当=-1h49m55s146ms

当=-1h49m53s904ms

当=-1h49m54s502ms

....直到所有“卡住”的消息都被很好地接收。

此外,当卡住的消息太多时,似乎有些丢失了,限制为 875 条消息。

我无法弄清楚什么可以解释这种行为。

4

0 回答 0