0

我的活动将应用程序周围的处理程序共享给服务中的工作线程。线程使用handler sendMessage() 活动使用handleMessage() 来处理它们

Activity 进入后台 Android 会杀死它,回来时它会再次启动。

Activity 调用 Service 的静态方法来检查服务中线程的最后状态(关于最后一个 sendMessage() 是什么)。这样它就可以根据服务线程的最后一条消息来初始化它的 UI 状态

Message m = SyncService.lastSyncMessage();

由于某种原因,消息 m 中的包有时是有效的(包含键/值对),有时键/值不存在

通过处理程序将消息转发到 UI 的线程一侧的代码如下所示。

  Handler uiHandler = UIGlobals.getHandler();
  Message msg = uiHandler.obtainMessage();
  Bundle msgBundle = new Bundle();

  msgBundle.putInt("status", syncEv.status.ordinal());
  msgBundle.putString("param", syncEv.param);

  msg.setData(msgBundle);
  if(uiHandler.sendMessage(msg))
  {
    lastMessage = msg;
  }

服务中的静态方法

   public static Message lastSyncMessage()
{
    return lastMessage;
}
4

1 回答 1

0

The Message object came from pool. When Activity is gone, handler's callback points to unavailable object. Android seem to re-prepare the Message ref for usage in the Pool, To solve it I stored the Actual Event in the static member rather than the Message.

于 2012-11-16T18:40:58.167 回答