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