Voglio rilevare quando la mia applicazione viene inviata in background. Ci sono molte domande sull'aggancio del tasto HOME - Capisco che ciò sia possibile solo registrandoti come app di avvio.Disconnessione automatica Android quando l'app passa allo sfondo
... MA ... come sempre c'è un cliente che vuole un certo comportamento ...
Abbiamo un app con elevati requisiti di sicurezza. Il client vuole che l'app si disconnetta dal server ogni volta che l'app entra in background per qualsiasi motivo (telefonata, tasto HOME, torna all'ultima attività) (* * per chiarire intendo che quando l'attività frontale sullo schermo non è una delle attività della mia app * *).
Quindi, se non riesco ad agganciare il tasto HOME, quali altre opzioni ci sono? Ovviamente il semplice hooking onPause()
non è d'aiuto, perché questo è Activity
-specific.
Il "migliore" che abbiamo trovato è di mantenere una serie di riferimenti di attività nella nostra classe Application. In ogni onResume()
di ogni attività lo aggiungiamo a questo array. In onPause()
lo rimuoviamo. Inoltre, in onPause()
, si enumera attraverso questa matrice per scoprire se alcune delle attività registrate sono in primo piano. Se non viene trovata alcuna attività in primo piano, l'utente viene disconnesso.
Sono insoddisfatto di questa soluzione e spero di trovare un modo migliore.
Ho appena aggiunto un nuovo commento a questo thread in cui mostro un metodo migliore (a mio parere) utilizzando Application.ActivityLifecycleCallbacks e il metodo @peceps. Vedi la mia risposta per il thread: http://stackoverflow.com/a/13996042/327386 – RPM
+1 un'ottima soluzione per API 14+ –