0

Ich habe eine Anwendung, die eine Aktivität eine unbekannte Anzahl von Malen wiederverwendet. Es läuftAndroid-Anwendung Lifecycle-Verwirrung

a> b1 || c1> b2 || c2> ...

Wenn ich ein> b1> b2> b1 gehe, zeigt meine App immer noch die b1-Liste auf dem Bildschirm, aber wenn ich darauf klicke, bringt mich das zur entsprechenden b2-Aktivität. Die ArrayList, die ich für die Daten für b verwende, muss für die korrekte Instanz von b wiederhergestellt werden.

Ich habe über http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle gelesen, aber ich denke nicht, dass onPause und onResume funktionieren wird, da ich die gleiche Aktivität wieder benutze.

Antwort

0

Alles hängt davon ab, wie Sie zwischen den Aktivitäten wechseln.

Wenn Sie zurück drücken oder Sie finish() tun, zerstören Sie Ihre Aktivität. Ich glaube in diesem Fall machen Sie finish() auf b2 und Sie kehren zu b1 zurück.

Denken Sie an Aktivitäten wie ein Stapel, der Instanzen Ihrer Aktivitäten enthält. Sie können mehrere Instanzen derselben Aktivität in Ihrem Stapel haben.

Wenn Sie ein und gehen Sie Ihren Stack b1 bleibt wie folgt aus:

b1 
a 

Wenn Sie zu b2 gehen, Ihren Stack wird wie dieses

b2 
b1 
a 

Dann, wenn Sie ein anderes tun startActivity() für b1 erhalten Sie

b1 
b2 
b1 
a 

wenn Sie jedoch finish() tun, oder Sie drücken zurück Sie zerstören tatsächlich b2 und Sie kommen zurück zu der ersten Instanz, die Sie von b1 bekommen haben. Denken Sie daran: Im Stapel haben Sie Instanzen von Aktivitäten, die verschiedene Daten enthalten können.

+0

Wenn ich in Aktivität b2 zurück drücke, wird nur die ui-Liste von b1 angezeigt. die tatsächlichen Daten sind immer noch die Daten von b2. sage ich habe eine Liste auf b1 mit 12345. Ich öffne b2, die 67890 zeigt. zurückschlagen und angezeigt wird 12345. Wenn ich einen Listeneintrag wählen, um die Daten an diesem Punkt, sagen 3, protokolliert es 8. die tatsächlichen Daten von b1 wird nicht wiederhergestellt. – r2DoesInc

+0

Ich habe keine Idee, wie Sie Ihre Daten organisieren. Wenn Sie jedoch zurück drücken, stirbt die oberste Aktivität auf dem Stapel und die 'onResume()' bei der nächsten Aktivität im Stapel wird aufgerufen. Bitte überprüfen Sie Ihre 'onResume()', um zu sehen, was Sie tun. Überprüfen Sie auch, ob Sie Änderungen in der Struktur vornehmen, die die Informationen oder den Adapter bereitstellt. Und zuletzt überprüfen Sie bitte, ob Ihre Informationen statisch sind (und daher von allen Aktivitäten geteilt werden können) oder ob Ihre Informationen lokal sind (in Ihrer Aktivität). –