Pour vous donner un peu d'historique, j'essaie d'envoyer un objet non sérialisable (Spanned) du thread fils au thread principal (via Message). J'ai essayé l'évident - en le transformant en un tableau d'octets et en l'envoyant de cette façon, mais cela donne une erreur car il n'implémente pas de sérialisable.Passage d'un objet non sérialisable à un gestionnaire (du thread fils)
Y a-t-il un autre moyen de l'envoyer en utilisant un Bundle? Ou autre chose?
Voici comment j'envoie le message dans le fil de l'enfant
// 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);
Voici le principal gestionnaire de threads (reçoit les messages envoyés par le fil de l'enfant):
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;
}
}
};
Si vous avez deux threads en un seul processus, pourquoi ne pas simplement passer une référence ou un clone de l'objet à transférer entre les threads? – Robert