2012-07-10 19 views
8

Darf ich wissen, was der richtige Weg ist zu wissen, ob eine Aktivität zerstört wurde? Derzeit verwende ich den folgenden Weg.Korrekte Art zu wissen, ob eine Aktivität zerstört wurde

private volatile boolean isOnDestroyCalled = false; 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    isOnDestroyCalled = true; 
} 

public boolean isOnDestroyCalled() { 
    return this.isOnDestroyCalled; 
} 

Gibt es einen anderen Weg als oben?

+0

Ich verstehe dein Problem nicht ganz, wann willst du das wissen ?, zerstörst du die Aktivität oder löst etwas anderes die Zerstörung aus? Sie können immer Finish() auslösen; um es zu zerstören. Hier ist ein wenig Hilfe http://developer.android.com/reference/android/app/Activity.html – najk

+2

Ich musste dies selbst wissen, weil ich eine asynchrone Aufgabe hatte, die einen Rückruf auf die Aktivität ausgelöst hat, die zerstört worden sein könnte in der Zwischenzeit. Meine Problemumgehung bestand darin, einen Verweis auf den Rückruf in der Aktivität beizubehalten, einen Verweis auf die Aktivität im Rückruf und den Verweis in dem Rückruf zu löschen, wenn die Aktivität zerstört wurde, so dass der Rückruf nichts ausführt, wenn null ist. – qix

+0

@Linus Die bisher bekannteste Technik ist die Verwendung des beibehaltenen Instanzfragments: http://stackoverflow.com/questions/8417885/android-fragments-reaining-an-asynctask-during-screen-rotation-or-configuratio –

Antwort

3

Das wird funktionieren, aber manchmal wird das Betriebssystem gehen und Ihre Anwendung herunterfahren, wenn es inaktiv ist, eine Zeit lang, wenn andere Anwendungen Priorität haben. Sicherlich weiß ich, wenn das geschieht, werden die Variablen ungültig gemacht, nicht sicher, wenn es in Ihrem Fall volatile verwendet, die zum Hauptspeicher geht. Aber um sicherzustellen, dass Sie den richtigen Wert erhalten, müssen Sie ihn in SharedPreferences speichern.

+2

scheint es kein guter Ansatz zu sein! –

Verwandte Themen