我有一个android应用程序,它可以反复从周围的wifi网络收集指纹(出于科学原因,不侵犯任何人的隐私)。
不管怎样,想象一下我有一个函数做这个工作,它叫做
. 我最初想这样开始:
ExecutorService mExecutor = Executors.newSingleThreadScheduledExecutor();
mExecutor.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
scanWifi();
}
}, 0, interval, TimeUnit.MILLISECONDS);
我还尝试过使用计时器/计时器任务来做同样的事情,但结果也很差。
Handler h = new Handler();
Runnable r = new Runnable() {
@Override
public void run() {
if (!mIsStopped) {
scanWifi();
h.postDelayed(this, mInterval);
}
}
};
h.post(r);
为什么会这样?CPU是否处于休眠状态,从而错过了预定的执行?我拿着一把枪
partial wakelock
在我的应用程序中。