gpt4 book ai didi

android - 广播接收器android的定时器

转载 作者:行者123 更新时间:2023-11-29 22:25:22 27 4
gpt4 key购买 nike

我正在开发这个应用程序,我正在扫描可访问的接入点。我必须一秒接一秒地定期做。我开始用一个普通的 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 移出该方法,然后将重新安排添加到 wifiReceiveronReceive 方法中。

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 );
}

关于android - 广播接收器android的定时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6105470/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com