2016-06-20 24 views
0

Wenn der Benutzer eine Aktivität hinterlässt, verschiebt Android sie zu den letzten Apps. Wenn Android mehr Arbeitsspeicher benötigt, "tötet" es die App - entlädt alle Aktivitätsobjekte und ist nicht mehr vorhanden. Der Benutzer kann immer noch auf die App in den letzten Apps klicken, die die Aktivität startet, in der der Benutzer sie verlassen hat. Dies führt oft zu nullPointerException. Wir können dies verhindern, indem wir Daten mit SharedPreferences, database oder savedInstanceState speichern.Wie kann ich Android OS simulieren, um eine Aktivität aufgrund niedriger Systemressourcen zum Testen zu beenden?

Wie kann ich testen, ob ich das Speichern von Daten korrekt implementiert habe, ohne auf Android warten zu müssen, um Aktivitätsobjekte zu entladen? Wie kann ich Android zwingen, meine Aktivitäten zu "töten"?

+0

Sie können die App in den aktiven Anwendungen wie in [diesem Bild] anhalten (http://www.ekoob.com/wp-content/uploads/2012/08/close-active-applications-android.png) und dann manuell zurückgehen. Hast du das gefragt? – Vucko

+0

@Vucko nicht wirklich, das tatsächlich entladen Objekte der Aktivität, aber wenn Sie auf die App in den recents klicken, startet das Android Standardaktivität, anstatt die alte wieder aufzunehmen. – cuddlecheek

Antwort

4

Es gibt einen Abschnitt namens Apps in der Developer options. Stellen Sie sicher, dass Do not keep activities aktiviert ist, damit Sie dieses Verhalten testen können. Vergessen Sie nicht, es auszuschalten, wenn Sie fertig sind, oder Sie werden später in Ihrer App seltsames Verhalten im Lebenszyklus debuggen.

1

Drehen Sie einfach Ihr Gerät, es wird die Aktivität erneut erstellen. So können Sie Ihr Problem simulieren. Aber, um das hinzuzufügen, bitte speichern Sie den Status der Variablen, die Sie erhalten Null Zeiger Ausnahme in "OnSaveInstance" und dann wiederherstellen Sie es in "OnRestoreInstance". Dies wird Ihr Problem lösen.

Stellen Sie sicher, dass keine der folgenden Eigenschaften für Ihre Aktivität hinzugefügt wird.

android:configChanges="keyboardHidden|orientation" 

or

android:screenOrientation="landscape" or portrait is not set. 

Denn wenn das der Fall ist, wird die Aktivität nicht neu, wenn das Gerät gedreht wird.

+0

Danke, ich werde es versuchen. – cuddlecheek

+0

+1. das ist hilfreich, danke, aber C0D3LIC1OU5's Antwort ist besser für meine Zwecke, also werde ich seine annehmen. – cuddlecheek