首页 > 解决方案 > Android AlarmManager 暂停/继续

问题描述

我想制作一个提醒用户每小时喝水的应用程序。我想每小时发送一次通知,但我想在晚上暂停警报管理器(通知)并在早上恢复/继续。我怎样才能做到这一点?

标签: javaandroid

解决方案


您可以查看警报触发的时间。

在 BroadcastReceiever 中获取日历实例,然后执行 startForegroundService

在您想要的有限时间内。

class AlarmReceiver : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {

    val service = Intent(context, NotificationService::class.java)
    service.putExtra("reason", intent!!.getIntExtra("reason", 0))
    service.putExtra("timestamp", intent.getLongExtra("timestamp", 0))
    service.putExtra("items", intent.getIntExtra("items", 0))

    when (Calendar.getInstance().get(Calendar.HOUR)) {

        // do push from 8 to 24
        in 8..24 -> {

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                    context!!.startForegroundService(service)
                } else {
                    context!!.startService(service)
            }
        }
    }
}

}


推荐阅读