2013-01-14 13 views
8

Wenn ich in meiner Anwendung die Home-Taste drücke, geht die Aktivität zu onDestroy(). Es soll onPause() Methode nur richtig heißen?Die Aktivität wird beim Drücken der Home-Taste zerstört.

Warum passiert es so?

+0

Können Sie etwas Code hinzufügen? Wenn Sie onPause (oder onDestroy) explizit befehlen, wird Ihr Problem wahrscheinlich aus diesem Bereich kommen. Verwenden Sie die Suchfunktion. –

+0

ist das nohistory-Attribut für Ihre Aktivität wahr? Wenn ja, dann wird das Ende der Aktivität – nandeesh

+4

genannt. Sieh dir diese Antworten an: http://Stackoverflow.com/a/14195833/779408 http://Stackoverflow.com/a/14196279/779408 Vielleicht hast du dasselbe Problem. Gehen Sie zu Einstellung-> Entwickleroptionen nicht angehakt 'Aktivitäten nicht beibehalten 'und' Hintergrundprozesslimit 'auf Standardlimit gesetzt. Wenn "Aktivitäten nicht beibehalten" aktiviert ist, wird der Status der Aktivitäten nicht beibehalten. Wenn Sie eine Aktivität verlassen, wird sie zerstört. Genießen! – breceivemail

Antwort

11

Es hängt davon ab, wie viel Speicher Ihr Telefon hat, wenn Ihr Telefon nicht sehr viel Speicher hat, dann wird es die Aktivität zerstören, um Ressourcen sofort freizugeben. Bei neuen Telefonen wird dies nicht passieren, da sie über ausreichend freien Speicherplatz verfügen.

5

Ihre Aktivität könnte beim Drücken der Home-Taste zerstört werden, wenn das System eingeschränkt ist und festgestellt hat, dass es einige Ressourcen freigeben muss. Die documentation Staaten, die onDestroy() können, wenn aufgerufen werden:

Dies entweder, weil die Aktivität passieren kann, ist Schlichten (jemand genannt finish() auf sie, oder weil das System vorübergehend ist diese Instanz der Aktivität zu zerstören um Platz zu sparen. Sie können mit dem isFinishing() -Methode zwischen diesen beiden Szenarien unterscheiden.

Zusätzlich haben beachten Sie, dass das System Ihr Programm kill kann onDestroy() nach onStop() ohne Aufruf aufgerufen wurde. Daher wird jede Bereinigung/Datenpersistenz Code sollte sein entweder in onPause() oder onStop().

0

Nun, es hängt von einer Menge Faktoren ab. Wenn Sie dieses Problem konfrontiert sind auf Android 3.2+ Geräte, sollten Sie Bildschirmgröße Eigenschaft zu android hinzufügen: configChanges

android:configChanges="keyboardHidden|orientation|screenSize" 

Dabei auch android hinzufügen: launchMode = „singleTop“, um Ihre Trägerrakete Aktivität. Beachten Sie, dass Sie Android SDK 15 oder höher als Ziel verwenden müssen. Ihre App funktioniert jedoch auch auf älteren Geräten. Hoffe das hilft.

5

auch überprüfen, ob Sie die Android verwenden Sie: Nohistory Flagge in Ihrem Manifest für die Aktivität

Dokumentation: android: Nohistory Unabhängig davon, ob die Aktivität von der Aktivität Stapel entfernt werden soll und fertig (sein finish() Methode genannt), wenn der Benutzer weg von ihm navigiert und es nicht mehr auf dem Bildschirm sichtbar ist

Verwandte Themen