我在使用唤醒锁时遇到问题。基本上,我在我的计时器线程中运行了唤醒锁,一个 AsyncTask 的 doInBackground 在我的应用程序的整个持续时间内运行(它是一个用于进行性能测量的后台应用程序)。然后我决定只希望屏幕每 10 分钟左右唤醒一秒钟左右。所以我创建了另一个扩展 AsyncTask 的类,并将下面的代码放入它的 doInBackground 中,但是现在屏幕没有重新打开。我应该注意,我使用 onCreate 中的 doInBackground 方法启动了这个线程和另外两个 AsyncTask 线程。
这是我的新内部类正在唤醒:基本上它应该做的就是每 10 分钟唤醒一次手机屏幕,直到我的其他两个后台线程将它们的布尔值设置为 true。
private class WakeUp extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... arg0) {
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, getClass().getName());
do{
try {
Thread.sleep(WAKEUP_EVERY); //600000ms
} catch (InterruptedException e) {
e.printStackTrace();
}
wl.acquire();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
wl.release();
}while(!timeCompleted || !transferCompleted);
return null;
}
}