2016-07-07 13 views
0

Ich habe eine Aktivität und ein Fragment. Dieses Fragment startet einen Thread, der 3 Sekunden dauert und dann eine Callback-Methode für die Aktivität aufruft.Android - Threads und Rückruf zu Aktivität

Wenn die Konfiguration geändert wird (d. H. Ausrichtung geändert), wird meine Aktivität mit neuen Referenzen neu erstellt, aber der Thread hat immer noch die alte Referenz, was zu einem Durcheinander führt.

Irgendeine Idee, das zu lösen? danke

Antwort

0

Wie wäre es mit Service statt Thread?

Referenz hier:

https://github.com/stephanenicolas/robospice/wiki/Starter-guide

, wenn Sie ein Fragment oder Aktivität zwischen Thread kommunizieren wollen. Verwenden Sie Schnittstelle wie Listener. Wenn beispielsweise die Aktivität neu erstellt wird oder sich etwas ändert, benachrichtigen Sie den Thread, und ändern Sie den Listener in eine neue Aktivität.

+0

Dank für die Beratung hinzufügen können, ist die Tatsache, dass ich von Dienstleistungen wie erweiterte Komponenten gedacht, die sein kann, für fortgeschrittene Zwecke verwendet. Funktionieren Threads wirklich schlecht dafür? –

+0

vielleicht ja. Du kannst danach suchen. – hanbumpark

0

Sie können eine AsyncTask anstelle von thread verwenden. Rufen Sie in Ihrer onDestroy() -Methode der Aktivität task.cancel() auf.

Daher erhält Ihre Aktivität keinen Rückruf, wenn die onDestroy() -Methode bereits aufgerufen wurde.

Wenn Sie sich mit Gewinden bestehen dann können Sie einen Scheck wie dies in Ihrer Callback-Methode

if(getActivity() == null || getActivity().isFinishing()) 
    return; 
+0

Das Problem ist, dass ich die Callback-Methode ausführen muss, aber da ich dieses Problem habe, muss ich die alten Referenzen auf die neuen umleiten ... Vielleicht sind Threads nicht gut für diese Zwecke ... –

+0

Sehen Sie die neue Aktivität was neu erstellt wird, wird den Thread erneut erstellen, so dass Sie den Rückruf erhalten. –