2016-03-18 18 views
0

Wenn der Benutzer sich anmeldet, wird ein Wertpaar zu einer SharedPreference hinzugefügt. Wenn die Apps gelöscht werden, möchte ich, dass der Benutzer abgemeldet wird und sich beim nächsten Start erneut anmelden muss. Wenn der Benutzer erneut von einer Aktivität zur anderen und wieder zurück zur Hauptaktivität wechselt, wird er abgemeldet.Benutzer abmelden, wenn App beendet wird

Das Problem ist, dass der OnStop von der MainActivity aufgerufen wird und den Eintrag in der SharedPreference setzt. Ich möchte, dass der Eintrag beim Wechseln zwischen den Aktivitäten bleibt, aber beim Beenden der App deaktiviert wird.

Antwort

2

Anstatt onStop() versuchen Sie onDestroy(). onStop() wird aufgerufen, wenn die Aktivität nicht sichtbar ist, und onDestroy(), wenn die Aktivität gerade zerstört wird.

+0

seien Sie vorsichtig bei der Rotation, abhängig von den Einstellungen Ihrer Aktivität, da sie 'onDestory()' aufrufen und eine neue 'Aktivität' erstellen können. Könnte vielleicht betrachten 'android: configChanges =" orientation "' –

+0

Ich verstehe nicht, warum onDestroy nicht sofort aufgerufen wird, wie die onStop tut – newclear

+0

Wenn Sie die App mit dem Zurück-Pfeil auf dem Gerät schließen, wird der onDestroy sofort aufgerufen, aber wenn Sie zeige all deine offenen Apps an und wische zum Schließen, es wird nicht aufgerufen – newclear

1

Der einzige garantierte Weg, den ich gefunden habe, ist eine Klasse zu erstellen, die Application.ActivityLifecycleCallbacks implementiert. Implementieren Sie die erforderlichen Methoden, um die Zähler der Aktivitäten, die gestartet, gestoppt, wiederaufgenommen und zerstört wurden, beizubehalten.

Nachdem Sie die Klasse implementieren, können Sie Ihre Implementierung in Ihrer Anwendungsklasse Umsetzung wie folgt registrieren:

registerActivityLifecycleCallbacks(new MyLifecycleHandler()); 

Wenn die Anzahl der gestarteten Aktivitäten die Anzahl der zerstörten Aktivitäten entspricht, können Sie Ihre Methoden aufrufen anmelden den Benutzer aus. Oder behalte einfach einen einzelnen Zähler und inkrementiere ihn, wenn Aktivitäten gestartet werden, und dekrementiere ihn, sobald sie zerstört sind - der gleiche Unterschied.

Mit dieser Strategie können Sie feststellen, ob Ihre App im Vordergrund ist oder nicht.

Verwandte Themen