2011-05-24 3 views
1

Je développe cette application si je fais un scan pour les points d'accès accessibles. Je dois le faire périodiquement seulement seconde après seconde. J'ai commencé à le faire avec un timerTask ordinaire, mais ça n'a pas bien fonctionné parce que c'est alaways qui créait de nouveaux threads. Alors, je commencé à utiliser la classe de gestionnaire dans Android et appeler une méthode postDelayed pour planifier l'analyse comme ça:minuterie pour le récepteur de diffusion android

protected void setTimer() 
    { 
     final long elapse = 100; 
     Runnable t = new Runnable() { 
      public void run() 
      { 

     Log.i(TAG3, "startedScan"); 
     IntentFilter filter = new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION); 
     registerReceiver(wifiReceiver, filter); 

     wifiManager.startScan(); 

       if(!isComplete) 
       { 
        mHandler.postDelayed(this, elapse); 
       } 
      } 
     }; 
     mHandler.postDelayed(t, elapse); 
    } 

Le problème est que l'analyse ne fonctionne que 3 fois et il n'a jamais Runns à nouveau .. Je ne trouve pas de solution, comment puis-je résoudre ce problème?

Répondre

2

Je suppose que isComplete est défini sur true, donc le Runnable n'est pas planifié à nouveau. Je suggère de déplacer le Runnable hors de la méthode, puis en ajoutant la reprogrammation à wifiReceiver s onReceive méthode.

Runnable t = new Runnable() { 
    public void run() 
    { 
     Log.i(TAG3, "startedScan"); 
     IntentFilter filter = new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION); 
     registerReceiver(wifiReceiver, filter); 
     wifiManager.startScan(); 
    } 
}; 

protected void setTimer() 
{ 
    final long elapse = 100; 
    mHandler.postDelayed(t, elapse); 
} 
+0

fonctionne très bien maintenant! Merci beaucoup Femi .. – Mark

Questions connexes