2011-12-02 14 views
6

Ho bisogno di utilizzare il listener inattivo per ascoltare che l'utente sta utilizzando l'applicazione o il periodo di inattività quando l'attività è attiva. Devo fare qualcosa quando l'utente non usa l'applicazione più di dieci secondi. Come posso renderlo possibile?Come posso avere listener inattivo sullo schermo?

risposta

7

Ecco l'idea di come si può realizzare questo compito:

primo luogo è necessario un Runnable(), che sarà eseguito quando si verifica il tuo timeout (per esempio 10 sec.). Di seguito è riportato il Runnable():

private Runnable DoOnTimeOut = new Runnable() 
{ 
    public void run() 
    { 
     // Do something Here 
    } 
} 

Ora, nella vostra attività, è possibile chiamare postDelayed per il DoOnTimeOut:

Handler hl_timeout = new Handler(); 

@Override 
public void onCreate(Bundle b) 
{ 
    hl_timeout.postDelayed(DoOnTimeOut, 10000); // The DoOnTimOut will be triggered after 10sec 
} 

Ora, parte più importante è che quando si vede l'interazione dell'utente, vuoi per annullare la chiamata a DoOnTimeOut e quindi impostare nuovamente la chiamata per i successivi 10 secondi. Ecco il metodo Override della tua attività per l'interazione dell'utente:

@Override 
public void onUserInteraction() 
{ 
    super.onUserInteraction(); 
    //Remove any previous callback 
    hl_timeout.removeCallbacks(DoOnTimeOut); 
    hl_timeout.postDelayed(DoOnTimeOut, 10000); 
} 

Spero che ti sarà utile.

+0

ottima risposta, hai salvato la mia giornata! Grazie – Ale