5

enter image description here Io sono nuovo allo sviluppo di app Android. Ho un piccolo problema.Il lavoro sulla mia applicazione Android improvvisamente ha colpito il pulsante "Home" in modo che vada in fondo dopo qualche tempo di nuovo andare a " Home "e fai clic sull'icona della mia app per iniziare nuovamente dal mio primo schermo invece di tenere l'ultima attività visualizzata e dovrebbe mostrare un messaggio del tipo" La tua sessione è scaduta quindi riaccendi la casella con due caselle EditText "quindi verifica le credenziali e consentire all'utente di continuare o reindirizzare alla schermata di login. Come ottenere questo.Come mantenere la gestione del timeout della sessione nell'applicazione Android

Grazie in anticipo ..

+0

Si sta utilizzando l'architettura Client Server? – Shrikant

+0

No voglio solo mantenere il login sicuro tutto ... – Srinivasan

risposta

3

È semplice su Android. è necessario mantenere SharedPreferences.

Leggi this per una migliore comprensione del concetto.

Ciò funziona come

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

Ad esempio, per salvare username, password e ID di sessione, è possibile:

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

e farli

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

Non penso che sia sicuro memorizzare la password dell'utente. Non sembra una pratica legale o buona. – Swami

+1

Sono assolutamente d'accordo. Non è sicuro. –

1

vedere questo schema per una spiegazione del ciclo di vita di attività: http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

Override i metodi appropriati nella vostra attività per tenere traccia di quando si perde/riacquista Focus.

+0

Secondo la tua risposta, l'applicazione sarà visibile o invisibile solo in base al suo ciclo di vita dell'attività. Ma la domanda è su come mantenere il timeout della sessione, cioè se la sessione scade, tutte le attività dallo stack verranno cancellate e l'utente verrà navigato per accedere alla schermata. – Shrikant

2

SharedPreferences è sicuramente la strada da percorrere, ma per approfondire i dettagli del timeout:

  • Salva il timestamp corrente in onPause() (->SharedPreferences)
  • Poi nel onResume() paragonano, per verificare la presenza di un timeout

Se non si fanno timeout solo continuare, altrimenti dimostrare che bello schermo, semplicemente il logout, l'auto-distruzione del dispositivo, o quello che vorrebbe fare in quel caso :-)

Inoltre si potrebbe prendere in considerazione l'attuazione di alcune specie di sessione di classe Manager, per gestire la cosa su un livello più alto: Nice example/tutorial from android hive

+1

Spiegazione molto chiara, +100 per riferimento autodistruzione/Missione impossibile – MandisaW

0

Se si desidera mantenere la sessione di accesso utente, invece di avere la preferenza in tutte le attività, è possibile disporre di un gestore per farlo.

  1. Creare Handler dopo che l'utente logsin
  2. Set sendMessageAtTime (Messaggio, lungo), lungo è il valore millisecondo. Questo chiamerà la funzione di disconnessione che è stata definita.
Problemi correlati