2010-12-06 3 views
0

私は基本的に、子スレッドからメッセージを介してメインスレッドに直列化不可能なオブジェクト(スパンド)を送信しようとしています。私は明らかにしようとしました - それをバイト配列に変換して送信しますが、シリアライズ可能ではないのでエラーが発生します。ハンドラに直列化できないオブジェクトを渡す(子スレッドから)

バンドルを使用して送信できる他の方法はありますか?または、他の何か?ここで

は、私は子スレッドここ

// 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; 
    } 
    } 
}; 
+0

1つのプロセスに2つのスレッドがある場合、なぜ単純ではないのですかスレッド間で転送されるオブジェクトのリファレンスまたはクローンを渡しますか? – Robert

答えて

4

ここで方法ですメッセージに任意のオブジェクトを添付します。

qemsg.obj = mySpanned; 
+0

ああ素晴らしい!ありがとう! – xil3

関連する問題