[英]Update notification every minute in the BroadcastReceiver
我試圖通過使線程進入循環睡眠狀態來每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()
無法正常工作一樣。
這是每分鍾更新通知的最佳方法嗎?如果是,我在做什么錯呢?
首先,要使此代碼正常工作,您需要在電話進入睡眠之前獲取喚醒鎖-基本上在循環之外,並保持該狀態直到循環完成。
其次,這不是正確的方法。 通過帶有WakefulBroadcastReceiver的AlarmManager使用警報來更新通知並為您處理喚醒鎖。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.