2010-11-18 11 views
3

Ich habe eine Kinder-App für Android und es gibt einige einzigartige Überlegungen für diese Anwendung, da die App im Grunde keine Navigation hat (es ist für junge Kinder). Ich möchte nicht meine App-Benutzeroberfläche (die auf dem iPhone erfolgreich war) durch Hinzufügen einer Beenden/Neustart-Schaltfläche zu brechen.Android-App/-Aktivität zum Starten von Fresh Vollständig jedes Mal, wenn es startet oder fortfährt?

Was ich wirklich brauche, ist ziemlich einfach - ich möchte, dass meine Aktivität/App jedes Mal, wenn sie startet, sauber und neu gestartet wird. Ob es sich um eine Erstladung handelt oder was auch immer - im Prinzip wird jedes Mal, wenn onResume aufgerufen wird, eine komplett neue Instanz meiner App gewünscht.

Ich dachte zuerst, ich könnte einfach beenden/beenden/beenden Sie die App, wenn der Benutzer verlässt. Aber ich habe keinen Weg gefunden, dies zu tun, der beim Start keine Abstürze verursacht. Auch jeder Thread/Stack Overflow Post über diese Idee ist gefüllt mit Leuten, die mit den Fingern wackeln und sagen, dass man nie eine App auf Android beenden sollte.

Wenn ich die App onExit nicht beenden kann, gibt es etwas, was ich tun kann, um meine Aktivität jedes Mal neu zu starten, wenn onResume aufgerufen wird? (oder wäre das eine Endlosschleife?).

Würde mich sehr freuen jede Hilfe!

+1

was meinst du mit "Neustart" der App? jedes Mal, wenn es neu gestartet wird, die Kinder zu sehen, was ist in der "Beginn" der App? – apps

+1

Sind Sie sicher, dass Sie das wollen? Android! = IPhone, vergewissern Sie sich, dass Sie die Android-Methode verstehen, bevor Sie sich für etwas entscheiden. Wenn ein Nutzer nach Hause kommt und dann sofort zu einer App zurückkehrt, erwartet er, dass sich die App an derselben Stelle befindet, an der er sie verlassen hat. –

+0

Ja, genau das meine ich. Die App hat keine Navigation, sie durchläuft mehrere Spiele. Navigation + 3-Jährige bedeutet in der Regel Frustration, das Vermeiden ist einer der Gründe, warum wir auf diesem Markt einen Schlag hatten. Ich bin mir * total * bewusst, dass dies normalerweise nicht der Fall ist, in dem eine Android-App funktionieren soll, und ich würde es in keinem anderen Fall so machen. Wie auch immer, es scheint alles gut zu funktionieren. – peter

Antwort

8

Versuchen Sie, Ihre Haupttätigkeit in onResume starten, und die Aktivität Stapel Clearing:

public void onResume() { 
    super.onResume(); 
    startActivity(new Intent(this, MainScreen.class).addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)); 
} 

vielleicht sind dies nicht die correctl Fahnen fügen Sie hinzu, aber überprüfen Sie die anderen Intent Fahnen und das könnte tun, was Sie wollen!

intent flags documentation

+0

Wenn Sie den Activity Lifecycle (http://developer.android.com/reference/android/app/Activity.html) überprüfen, können Sie sehen, dass wenn Sie sich in der Hauptaktivität befinden, eine Boot-Schleife auftritt. – josetapadas

2

in Ihrem Reload können Sie dies versuchen ..

onStop(); 
onCreate(getIntent().getExtras()); 
4

es durch den Aufruf finish() in onPause() gut zu funktionieren immer endeten.

Wieder schätze ich den Ratschlag von Leuten, die sagen "das ist nicht, wie Android Dinge tut". Ich verstehe die Best Practices zu diesem Zeitpunkt ziemlich gut. Dies ist eine ungewöhnliche Situation für einen ungewöhnlichen Benutzertyp.