Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 有没有可能在安卓处于深度睡眠状态时有一个频繁而精确的触发计时器?_Android_Kotlin_Alarmmanager - Fatal编程技术网

Android 有没有可能在安卓处于深度睡眠状态时有一个频繁而精确的触发计时器?

Android 有没有可能在安卓处于深度睡眠状态时有一个频繁而精确的触发计时器?,android,kotlin,alarmmanager,Android,Kotlin,Alarmmanager,我想创建一个小应用程序,当设备因为按下电源按钮而处于深度睡眠状态时,它会以不同的时间(从几秒到几分钟甚至一个多小时)触发计时器。 我试着用倒计时,它工作得很好,但直到我按下电源按钮。在那之后,时间是一个大混乱,远离给定的序列 我读到了关于Handler和postDelayed的文章,认为它们是我的朋友,但它使用了upTimeMillis,当设备处于深度睡眠状态时,它不会继续计数 我还阅读了有关AlarmManager的内容,我猜SetExactAndAllowHileId是正确的,但文档中说:

我想创建一个小应用程序,当设备因为按下电源按钮而处于深度睡眠状态时,它会以不同的时间(从几秒到几分钟甚至一个多小时)触发计时器。 我试着用倒计时,它工作得很好,但直到我按下电源按钮。在那之后,时间是一个大混乱,远离给定的序列

我读到了关于
Handler
postDelayed
的文章,认为它们是我的朋友,但它使用了upTimeMillis,当设备处于深度睡眠状态时,它不会继续计数

我还阅读了有关
AlarmManager
的内容,我猜
SetExactAndAllowHileId
是正确的,但文档中说:

这些警报在空闲时会显著影响设备的电源使用(从而导致调度警报的应用程序严重的电池故障),因此应谨慎使用。为了减少滥用,对特定应用程序发出警报的频率有限制。在正常系统运行情况下,不会超过大约每分钟发出一次警报(此时发出所有此类待处理警报);在低功率怠速模式下,此持续时间可能会明显更长,例如15分钟。

为什么我的应用程序被滥用仅仅是因为它想做比1分钟或15分钟更频繁的事情?? 所以我想知道这是否可能,或者是否有解决办法。只有在不会造成太多电流消耗的情况下,才可以选择让整个应用程序停止睡眠


非常感谢您的提示。

比每分钟做更多的事情意味着设备将反复从睡眠中醒来,特别是针对您的应用程序。那需要很多电池。不需要精确定时后台工作的应用程序可以在设备每隔一分钟左右定期检查时完成工作,因此它们不会导致设备更频繁地脱离低功耗模式。AlarmManager就是这样做的。请注意,如果您的应用程序经常在不到一分钟的时间内设置警报,它将在设置中显示为主要电池用户。