簡體   English   中英

每分鍾在BroadcastReceiver中更新通知

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM