android - AlarmManager 在模拟器中触发,但不在物理 Oreo 设备上触发
问题描述
我们在后台运行一些警报服务,它在奥利奥模拟器中运行,但在真实设备上它无法运行。谁能告诉我为什么我的代码失败?
val alarmIntent = Intent(this, NetworkChangeReceiver::class.java)
val pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT)
val calendar = Calendar.getInstance()
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.MINUTE, 1)
val manager = getSystemService(Context.ALARM_SERVICE) as AlarmManager
manager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.timeInMillis, 1000 * 60, pendingIntent)
另一种选择是使用工作管理器,但它仅每 15 分钟工作一次。
解决方案
后台服务在某些设备中不起作用,例如 Vivo:ColorOs OnePlus:OxygenOs MI:FunTouchOs。. . .
More information check this below url.
https://stackoverflow.com/a/52373492/7387028
推荐阅读
- r - r:如何将 hh:mm:s 中的持续时间计算为以小时为单位但与午夜重叠的固定时间
- laravel - 如何在 Laravel 集合中创建数组
- tensorflow - Tensorflow GradientTape 在使用 MultivariateNormalTriL 分布时返回 NaN
- php - PDO - 致命错误:未捕获的 PDOException:SQLSTATE [23000]:违反完整性约束:1452 无法添加或更新子行:
- python-3.x - 如何在 c# 中更改 python 脚本的控制台标题,如 console.title
- python - 使用python登录moodle
- arrays - 使用 printf 函数 C 格式化间距
- android - 绑定数据时回收器视图适配器上的空指针异常
- javascript - 带有 z-index 的 JavaScript 和 CSS 轮播/幻灯片
- javascript - 将 firebase firestore 连接到 javascript 后端