java - Android AlarmManager 暂停/继续
问题描述
我想制作一个提醒用户每小时喝水的应用程序。我想每小时发送一次通知,但我想在晚上暂停警报管理器(通知)并在早上恢复/继续。我怎样才能做到这一点?
解决方案
您可以查看警报触发的时间。
在 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)
}
}
}
}
}
推荐阅读
- javascript - 如何以安全的方式从字符串运行 javascript 代码
- ms-access - 需要帮助查找代码中的错误以过滤表单
- swift - 后台 URLSession + 合并?
- azure - Terraform - List to String 以创建 azure 订阅列表
- c - C 程序如何在使用 execve 后自行重启?
- javascript - 有没有更简单的方法可以让这些 axios 发布请求?
- python - Numpy 根据列删除唯一行
- spring - 如何在 Spring 的 FrontController 中捕获异常
- rust - 结构特征错误:类型参数的数量错误:预期为 1,发现为 0
- hadoop - 将数据从 BigQuery 表加载到 Dataproc 集群时出错