Таймер для трансляции приемника Android

1

Я разрабатываю это приложение, если я просматриваю доступные точки доступа. Я должен делать это периодично только второй раз. Я начал делать это с помощью обычного 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 раза, а затем снова не запускается. Я не могу найти решение! Как я могу это решить?

Теги:
timer
broadcastreceiver

1 ответ

2
Лучший ответ

Я предполагаю, что isComplete получает значение true, поэтому Runnable не перепланируется. Я предлагаю переместить Runnable из метода, а затем добавить перенос на метод wifiReceiver 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 );
}   
  • 0
    Просто отлично работает сейчас! Большое спасибо Феми ..

Ещё вопросы

Сообщество Overcoder
Наверх
Меню