Ich versuche, Handler zu implementieren, die denselben Looper aus verschiedenen Threads abhören.Mit Looper.getMainLooper() initialisierte Handler reagieren nicht auf Nachrichtenrückrufe.
Unten habe ich zwei Handler, eine im Haupt-Thread erstellt, eine andere im Unter-Thread, aber beide sind initialisiert, um auf dem Main Looper zu hören.
Aber wenn ich eine Nachricht wie unten senden, druckt nur der Kindhandler die Nachricht. Der Haupt-Handler empfängt die Nachricht nicht.
03-20 22:02:26.754: A/(12857): send msg to main looper
03-20 22:02:26.847: A/(12857): child:{ what=100 when=-8ms }
Was mache ich falsch? Danke fürs Lesen.
Ich sehe, danke! Angenommen, eines Tages wäre das Runnable eine äußere Klasse anstelle einer inneren Klasse, ich sollte ihm über seinen Konstruktor einen initialisierten Handler übergeben, richtig? –
Die Architektur wäre anwendungsabhängig, aber Sie benötigen einen Verweis auf den 'Handler' von wo immer Sie Nachrichten veröffentlichen möchten. – Devunwired
Warum nicht einfach einen Handler (this.getMainLooper()) im Anwendungskontext verwenden (die Klasse, die Application erweitert)? Wäre das nicht sauberer als in einer Aktivität? –