将不可序列化的对象传递给Handler(来自子线程)

时间:2010-12-06 10:07:31

标签: java android multithreading serialization

为了给你一点历史 - 我基本上试图从子线程向主线程(通过Message)发送一个不可序列化的对象(Spanned)。我尝试了显而易见的事情 - 将其转换为字节数组并以此方式发送,但由于它没有实现可序列化,因此会出错。

有没有其他方法可以使用Bundle发送它?或者是其他东西?

以下是我在子线程

中发送消息的方式
// message and bundle for the questions explanation
Message qemsg = messageHandler.obtainMessage();

Bundle qeb = new Bundle();
qeb.putString("questionExplanations", questionExplanations);

qemsg.setData(qeb);
qemsg.arg1 = 0;
messageHandler.sendMessage(qemsg);

这是主线程处理程序(接收从子线程发送的消息):

private Handler messageHandler = new Handler() {
  @Override
  public void handleMessage(Message msg) {
    CFAData cd = CFAData.getSingletonObject();
    Bundle summaryBundle = msg.getData();

    switch(msg.arg1) {
      case 0:
        // receives the bundle here and does what it needs on the UI thread
        //testQuestionsExplanations.append(spannedExplanationsObj);

        break;
      default:
        break;
    }
  }
};

1 个答案:

答案 0 :(得分:4)

以下是将任意对象附加到消息的方法:

qemsg.obj = mySpanned;