5

enter image description here Jestem nowym deweloperem aplikacji na Androida. Mam mały problem. Praca w mojej aplikacji na Androida nagle uderzyła w przycisk "Strona główna", więc po pewnym czasie znowu przechodzi w " Strona główna "i kliknij ikonę mojej aplikacji, aby ponownie zacząć od mojego pierwszego ekranu, zamiast tego mam zachować ostatnią wyświetlaną aktywność i powinien wyświetlić komunikat" Twoja sesja wygasła. Więc proszę ponownie zalogować pole z dwoma polami EditText ". Następnie sprawdź dane logowania i Pozwól użytkownikowi kontynuować lub przekierować do ekranu logowania. Jak to osiągnąć.Jak zachować obsługę limitu czasu sesji w Androidzie Aplikacja

góry dzięki ..

+0

Czy używasz architektury klienta serwera? – Shrikant

+0

Nie, chcę tylko zachować login bezpieczny, to wszystko ... – Srinivasan

Odpowiedz

3

To proste w systemie Android. musisz zachować SharedPreferences.

Przeczytaj this, aby lepiej zrozumieć koncepcję.

to będzie działać jako

==> 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. 

Na przykład, aby zapisać nazwę użytkownika, hasło i identyfikator sesji, można:

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(); 

i je

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

Nie sądzę, że bezpieczne jest przechowywanie hasła użytkownika. To nie wydaje się być prawną lub dobrą praktyką. – Swami

+1

Całkowicie się zgadzam. To nie jest bezpieczne. –

1

zobaczyć ten schemat o wyjaśnienie cyklu aktywny: http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

zastąpić odpowiednie metody w swojej działalności, aby śledzić, kiedy traci/odzyskuje ostrość.

+0

Zgodnie z twoją odpowiedzią aplikacja będzie widoczna lub niewidoczna tylko na podstawie jej cyklu życia. Pytanie brzmi jednak, jak zachować limit czasu sesji, tzn. Jeśli przekroczymy limit czasu sesji, wszystkie działania ze stosu zostaną usunięte, a użytkownik zostanie przeniesiony do ekranu logowania. – Shrikant

2

SharedPreferences jest zdecydowanie sposób, aby przejść, ale aby przejść do więcej szczegółów na temat limitu czasu:

  • Zapisz aktualny timestamp w onPause() (->SharedPreferences)
  • Następnie w onResume() porównać je, aby sprawdzić timeout

Jeśli limit czasu nie tylko kontynuować, inaczej pokazać, że ładny ekran, po prostu wyloguj się, samodestrukuj urządzenie lub cokolwiek chcesz zrobić w tym przypadku :-)

Możesz również rozważyć wdrożenie pewnego rodzaju klasy menedżera sesji, aby obsłużyć ją na wyższym poziomie: Nice example/tutorial from android hive

+1

Bardzo jasne wyjaśnienie, +100 do autodestrukcji/referencji Mission Impossible – MandisaW

0

Jeśli chcesz zachować sesję logowania użytkownika, zamiast mieć preferencje we wszystkich działaniach, możemy mieć obsługę lokalną w miejscu, aby to zrobić.

  1. Tworzenie Handler po logsin użytkownika
  2. Set sendMessageAtTime (Message, długa), długa jest wartość milisekundy. Spowoduje to wywołanie zdefiniowanej funkcji wylogowania.
Powiązane problemy