[英]Re-enable alarms (non-repeating) that were not previously notified before shutdown, on android boot
我是 Android 通知的新手,我有一個關於設備重啟后的問題,如何僅重新啟用那些在關機前未通知的警報。 舉個例子:
我從閱讀有關設置 BootReceiver / BroadcastReceiver 的理解是,一旦設備重新啟動,所有通知都會被取消,我需要在 BootReceiver 中重新啟用它們。 如何確保僅重新啟用第 2 天和第 3 天警報?
從概念上講,我在考慮 2 種可能性: 選項 1:每當出現警報通知時,無需打開應用程序,修改數據庫中的標志以指示警報已觸發。 然后在 BootReceiver 中,從數據庫中過濾活動警報以根據標志重新啟用。 這可能嗎? 彈出警報通知時需要對數據庫進行操作,甚至無需啟動應用程序。
選項 2:在 BootReceiver 中,從數據庫中篩選為“警報時間 > 上次關機時間”。 似乎有一種方法可以使用 Intent.ACTION_SHUTDOWN 將上次關閉時間存儲在 SharedPreferences 中,但我不確定這有多可靠,例如,如果設備意外關閉,保存是否會成功。
我不確定在這個用例中我是否走在正確的軌道上。 任何建議或代碼示例將不勝感激。
我得到了選項 1 的工作。 使用Google Codelab 示例,將存儲庫傳遞給 sendNotification function,並在末尾添加代碼以修改數據庫。
fun NotificationManager.sendNotification(messageBody: String, applicationContext: Context, repository: MyRepository) {
...
notify(NOTIFICATION_ID, builder.build())
val viewModelJob = Job()
val uiScope = CoroutineScope(Dispatchers.Main + viewModelJob)
uiScope.launch {
withContext(Dispatchers.IO) {
repository.updateNotificationStatus(id, true)
}
Timber.i("At the time when notification appears, database's status flag will change to true")
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.