5

enter image description here Ich bin neu in Android App-Entwicklung.Ich habe ein kleines Problem.Arbeiten auf meiner Android-Anwendung plötzlich auf "Home" Button, so dass es im Hintergrund geht nach einiger Zeit wieder gehen zu " Home "und klicke auf mein App-Symbol, um von meinem ersten Bildschirm aus zu starten. Ich behalte die zuletzt angezeigte Aktivität und sollte eine Nachricht wie" Deine Sitzung ist abgelaufen "angezeigt werden. Bitte logge die Box erneut mit zwei EditText-Feldern ein und Erlauben Sie dem Benutzer, den Anmeldebildschirm fortzusetzen oder umzuleiten. Wie erreichen Sie dies?Wie Session-Timeout-Behandlung in Android-Anwendung zu verwalten

Vielen Dank im Voraus ..

+0

Verwenden Sie die Server-Client-Architektur? – Shrikant

+0

Nein, ich möchte nur die Anmeldung sicher, das ist alles ... – Srinivasan

Antwort

3

Es ist einfach in Android. Sie müssen SharedPreferences pflegen.

Lesen Sie this für ein besseres Verständnis des Konzepts.

wird dies als Arbeit

==> when ever you are trying to maintain login concept save user name in the sharedpreference. 
==> once data is edited in prefernces.xml , the data in it can be check in any Activity. 

Zum Beispiel Benutzername, Passwort und Session-ID zu speichern, können Sie:

SharedPreferences pref = myContexy.getSharedPreferences("Session Data", MODE_PRIVATE); 
SharedPreferences.Editor edit = pref.edit(); 
edit.putString("User Name", username); 
edit.putString("Password", password); 
edit.putInt("Session ID", session_id); 
edit.commit(); 

und erhalten sie

SharedPreferences pref = myContexy.getSharedPreferences("Session Data", MODE_PRIVATE); 
username = pref.getString("User Name", ""); 
password = pref.getString("Password", ""); 
session_id = pref.getInt("Session ID", 0); 
+4

Ich denke nicht, dass es sicher ist, das Passwort des Benutzers zu speichern. Es scheint keine legale oder gute Praxis zu sein. – Swami

+1

stimme ich voll und ganz zu. Es ist nicht sicher. –

1

dieses Diagramm Siehe für eine Erklärung des Aktivitätszyklus: http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

überschreiben Sie die entsprechenden Methoden in Ihrer Tätigkeit zu verfolgen, wenn sie verliert/gewinnt konzentrieren.

+0

Entsprechend Ihrer Antwort wird die Anwendung nur sichtbar oder unsichtbar basierend auf seiner Aktivität Lebenszyklus. Die Frage ist jedoch, wie das Sitzungszeitlimit beibehalten werden soll, d. H. Wenn die Sitzung abläuft, werden alle Aktivitäten vom Stapel gelöscht und der Benutzer wird zum Anmeldebildschirm navigiert. – Shrikant

2

SharedPreferences ist auf jeden Fall der Weg zu gehen, aber für die Zeitüberschreitung detaillierter zu gehen:

  • Speichern Sie die aktuellen Zeitstempel in onPause() (->SharedPreferences)
  • dann in onResume() vergleichen es,
  • für ein Timeout zu überprüfen

Wenn Sie nicht nur weiterhin haben Timeout, zeigen sonst so schön Bildschirm, einfach ausloggen, selbst zerstören das Gerät, oder was auch immer Sie in diesem Fall tun möchten :-)

Sie könnten auch eine Art von Session Manager-Klasse implementieren, um es auf einer höheren Ebene zu behandeln: Nice example/tutorial from android hive

+1

Sehr klare Erklärung, +100 für Selbstzerstörung/Mission Impossible Referenz – MandisaW

0

Wenn Sie die Benutzeranmeldungssitzung beibehalten möchten, können Sie anstelle der Präferenz in allen Aktivitäten den Handler inplace verwenden, um dies zu tun.

  1. erstellen Handler, nachdem der Benutzer logsin
  2. Set sendMessageAtTime (Message, lang), lange Millisekundenwert ist. Dies ruft die Abmeldefunktion auf, die definiert wurde.
Verwandte Themen