2011-12-02 14 views
6

Potrzebuję używać bezczynny odbiornik do słuchania, użytkownik korzysta z aplikacji lub bezczynności, gdy aktywność jest żywa. Muszę coś zrobić, gdy użytkownik nie korzysta z aplikacji dłużej niż dziesięć sekund. Jak mogę to zrobić?Jak mogę mieć nieaktywnego słuchacza?

Odpowiedz

7

Oto pomysł, jak można osiągnąć to zadanie:

Po pierwsze potrzebujesz Runnable(), która zostanie uruchomiona w momencie wystąpienia Twój limit czasu (na przykład 10 sek.). Poniżej znajduje się Runnable():

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

Teraz, w swojej działalności, można nazwać postDelayed dla DoOnTimeOut:

Handler hl_timeout = new Handler(); 

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

Teraz najważniejsze jest to, że kiedy widzisz interakcji użytkownika, chcesz aby anulować wywołanie DoOnTimeOut, a następnie ponownie ustawić wywołanie na następne 10 sekund. Oto metoda przesłaniania Twojej aktywności w Interakcji z użytkownikiem:

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

Mam nadzieję, że będzie dla Ciebie pomocna.

+0

Świetna odpowiedź, uratowałeś mój dzień! Dzięki – Ale