Flutter 的 Timer.periodic 在间隔执行时息屏会暂停执行,怎么解决呢?

需要定时运行一个函数获取 API 数据,用的 Timer.periodic 做间隔执行,但是测试发现正式包手机息屏后 Timer.periodic 就暂停了,真机调试模式下是没有问题的。后来换 android_alarm_manager 插件实现间隔调用还是有同样的问题。
Flutter 的 Timer.periodic 在间隔执行时息屏会暂停执行,怎么解决呢?

3 回复

wakelock 了解下

更多关于Flutter 的 Timer.periodic 在间隔执行时息屏会暂停执行,怎么解决呢?的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


是让手机常亮吗?

关于Flutter中Timer.periodic在设备息屏后暂停执行的问题,这通常是由于操作系统的电源管理策略导致的。当设备屏幕关闭时,为了节省电量,系统会进入低功耗模式,限制后台任务的执行。以下是一些可能的解决方案:

  1. 使用WorkManager或AlarmManager(针对Android平台): Flutter本身没有直接的后台任务管理API,但可以通过集成原生插件如work_manageralarm_manager来实现。这些插件利用了Android的WorkManager或AlarmManager API,能够在设备息屏后继续执行任务。

  2. 保持应用活跃: 虽然不推荐(因为会影响用户体验和电池寿命),但可以通过一些手段(如播放无声音频、定期唤醒屏幕等)来保持应用处于活跃状态,从而避免被系统挂起。然而,这些方法可能会导致应用被应用商店下架或受到用户负面评价。

  3. 调整电源管理设置: 对于测试或开发环境,可以在设备的电源管理设置中关闭低功耗模式或允许特定应用不受此模式限制。但这并不是一种通用的解决方案,不适用于最终用户。

  4. 重新设计应用逻辑: 如果可能,重新考虑应用的设计逻辑,避免在设备息屏后需要执行周期性任务。例如,可以将任务推迟到用户重新唤醒设备时执行。

总之,解决Timer.periodic在设备息屏后暂停执行的问题需要根据具体的应用场景和需求来选择合适的方法。

回到顶部