广播接收器android的计时器

问题描述

| 如果正在扫描可访问的访问点,则我正在开发此应用程序。我只需要一秒钟又一秒地做一次。 我开始使用普通的timerTask来执行此操作,但效果不佳,因为它总是在创建新线程。因此,我开始在android中使用处理程序类,并调用postDelayed方法来安排扫描!
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 );
    }   
问题是扫描仅运行3次,然后再也没有运行。.我找不到解决方案!如何解决此问题?     

解决方法

我猜ѭ1已设置为true,因此不会重新安排Runnable。我建议将
Runnable
从方法中移出,然后将重新计划添加到
wifiReceiver
s
onReceive
方法中。
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 );
}