Die Aktivität wird beim Drücken der Home-Taste zerstört.

8

Wenn ich in meiner Anwendung die Home-Taste drücke, geht die Aktivität zu onDestroy() . Es wird angenommen, dass onPause() method nur richtig heißt?

Warum passiert es so?

    
Kamalone 14.01.2013, 06:39
quelle

4 Antworten

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. Auf neuen Telefonen wird dies nicht passieren, weil sie viel freien Speicherplatz haben.

    
jcw 14.01.2013, 06:42
quelle
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 einige Ressourcen freigegeben werden müssen. Die Dokumentation besagt, dass onDestroy() aufgerufen werden kann, wenn:

  

Dies kann entweder geschehen, weil die Aktivität beendet wird (jemand namens finish ()) oder weil das System diese Instanz der Aktivität vorübergehend platzsparend zerstört.Sie ​​können mit der isFinishing () -Methode zwischen diesen beiden Szenarien unterscheiden .

Beachten Sie außerdem, dass das System kill Ihres Programms aufrufen kann, ohne onDestroy() aufzurufen, nachdem onStop() aufgerufen wurde. Daher sollte jeder Bereinigungs- / Datenpersistenzcode in onPause() oder onStop() enthalten sein.

    
Alex DiCarlo 14.01.2013 06:45
quelle
5

Überprüfen Sie auch, dass Sie das android: noHistory-Flag in Ihrem Manifest für die Aktivität nicht verwenden

Dokumentation: android: noHistory Gibt an, ob die Aktivität aus dem Aktivitätsstapel entfernt und beendet werden soll (die Methode finish () wird aufgerufen), wenn der Benutzer nicht mehr auf dem Bildschirm sichtbar ist

    
Alexis Contour 20.10.2015 13:56
quelle
0

Nun, es hängt von vielen Faktoren ab. Wenn dieses Problem auf Android 3.2 + -Geräten auftritt, sollten Sie die Eigenschaft screenSize zu android: configChanges

hinzufügen %Vor%

Außerdem fügen Sie Ihrer Launcher-Aktivität auch android: launchMode="singleTop" hinzu. 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.

    
Pulkit Gupta 26.01.2013 04:03
quelle