5

In meiner aktuellen Anwendung wird die onResume-Funktion ausgelöst, wenn ich eine Aktivität zum ersten Mal lade. Ich schaute in die Activity Lifecycle, aber ich fand keinen Weg, dies zu verhindern.Android - Funktion onResume() verhindern, wenn die Aktivität zum ersten Mal geladen wird (ohne SharedPreferences)

Kann ich verhindern, dass die Funktion onResume() geladen wird, wenn eine Aktivität zum ersten Mal geladen wird, ohne SharedPreferences zu verwenden?

+2

Warum wollen Sie das nicht tun? es? Was ist so wichtig, um einen konsistenten Lebenszyklus von Android zu brechen? Kannst du es nicht im onCreate tun? – RvdK

+0

mögliches Duplikat von [Android onCreate onResume] (http://stackoverflow.com/questions/6175679/android-oncreate-onresume) –

+0

Mögliches Duplikat von [Android onCreate onResume] (http://stackoverflow.com/questions/6175679/ android-oncreate-onresume) –

Antwort

17

Erstens, wie RvdK sagt, sollten Sie den Android Activity Lifecycle nicht ändern, Sie müssen wahrscheinlich Ihr Aktivitätsverhalten neu gestalten, um mit ihm konform zu sein.

Wie auch immer, dies ist der beste Weg, die ich sehe:

1.Erstellen eine boolean Variable in Ihrer Aktivität

public class MyActivity extends Activity{ 
    boolean shouldExecuteOnResume; 
    // The rest of the code from here.. 
} 

2.Set es als falsch in Ihrem onCreate:

public void onCreate(){ 
    shouldExecuteOnResume = false 
} 

3.Dann in Ihrem onResume:

public void onResume(){ 
    if(shouldExecuteOnResume){ 
    // Your onResume Code Here 
    } else{ 
    shouldExecuteOnResume = true; 
    } 

} 

Auf diese Weise wird Ihre onResume nicht beim ersten Mal ausgeführt (shouldExecuteOnResume ist falsch), aber es wird stattdessen alle anderen Male ausgeführt, dass die Aktivität geladen wird (weil shouldExecuteOnResume wird wahr). Wenn die Aktivität dann (vom Benutzer oder vom System) abgebrochen wird, wird beim nächsten Laden die Methode onCreate erneut aufgerufen, so dass onResume nicht ausgeführt wird.

+0

Vielen Dank für Ihre Antwort. Ich habe auch dieselbe Methode verwendet, die Sie erwähnt haben, aber wenn ich die "MyActivity" -Aktivität von einer anderen Aktivität aus starte, wird die Variable shouldExecuteOnResume zurückgesetzt. Es scheint, dass jedes Mal, wenn ich die MyActivity-Aktivität aufruft, eine neue Instanz erstellt wird, anstatt die vorhandene Instanz zu verwenden. Ich möchte, dass die App die vorhandene Instanz von MyActivity verwendet. – Jack

+0

Sie können versuchen, die Variable statisch zu machen, aber ich denke, das Problem ist, dass Sie nie wissen, ob/wann Ihre App vom System getötet wird. Sie können versuchen, einige andere Kontrollen im onStop zu setzen, um zu überprüfen, was passiert. –

+0

Danke, es funktionierte, als ich sustExecuteOnResume statisch machte. – Jack