2010-08-23 9 views
0

Dans Android, j'écris une application dans laquelle, je voudrais capturer un événement si l'utilisateur ne fait aucune activité (appuyez sur/touche enfoncée).Android: une solution légère pour détecter keypress

Pour un meilleur contexte - C'est comme un délai d'attente de session.

Solution de base - Je peux remplacer l'événement de pression de touche/tapotement et mettre une minuterie qui fonctionne en continu comme un fil ou un service. À mon avis, c'est une solution un peu plus lourde en termes de ressources.

Des idées pour une solution élégante?

Répondre

1

champs de classe d'activité:

private static final int KEY_TIMEOUT = 60000; 
private long lastKeyEventTime; 
private boolean checkKey; 

dans Activity.onCreate():

checkKey = true; 

Thread t = new Thread(){ 
    while (checkKey){ 
     if (lastKeyEventTime!=0 && System.currentTimeMillis()-lastKeyEventTime>TIMEOUT){ 
      // TIMEOUT 
     } 

     try { 
      Thread.sleep(500); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
t.start(); 

dans Activity.onDestroy():

checkKey = false; 

dans Activity.onKeyDown():

lastKeyEventTime = System.currentTimeMillis(); 
Questions connexes