我尝试通过让线程在循环中休眠来每60秒更新一次通知。
for (int incr = 0; incr <= settingsPrefs.getInt("notifyMinutesBefore", 10); incr++) {
PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "wakeUpTag");
wakeLock.acquire();
if (settingsPrefs.getBoolean("runNotification" +i, true)) {
notification.setContentText(""+timeUntilStartingInt);
nm.notify(1000000 + i, notification.build());
timeUntilStartingInt = timeUntilStartingInt - 1;
try {
Thread.sleep(60 * 1000);
} catch (InterruptedException ignored) {
}
}
}
发生了什么,如果我手动打开手机屏幕,通知就不会更新,就好像wakeLock.acquire()
无效。
这是每分钟更新通知的最佳方式,如果是这样,我做错了什么?
答案 0 :(得分:0)
首先,要使此代码正常工作,您需要在手机进入睡眠状态之前获取唤醒锁 - 基本上在循环之外,并保持它直到循环完成。
其次,这不是正确的做法。使用带有WakefulBroadcastReceiver的AlarmManager警报更新通知并为您处理唤醒锁。