在Android

编程入门 行业动态 更新时间:2024-10-25 02:30:37
本文介绍了在Android_ALARM_MANAGER处于抖动状态时运行后台任务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 我正在尝试使用flutter中的android_alarm_manager插件定期运行一个简单的后台任务。我按照readme文件中的说明操作,它可以正常工作,但不能正常工作..

我坚持使用这个示例,首先创建了一个每分钟打印一条消息的周期性任务。在我为应用程序运行热启动后,我在控制台收到了以下消息:

W/AlarmService(4261):尝试启动重复的后台隔离。正在返回...

所以我尝试取消该任务,并创建一个每隔5秒运行一次的新任务。但这并没有奏效。虽然Cancel方法返回True,但第一个任务仍在每分钟运行一次,而不是像Intendet那样每隔5秒运行一次。

正在执行热重新启动...

正在将文件同步到IA Emulator上的设备AOSP...

W/AlarmService(4261):尝试启动重复的后台隔离。正在返回...

重新启动应用程序的时间为%2.194ms。

I/AlarmService(4261):AlarmService已启动!

i/fltter(4261):[2020-07-24 06:21:34.697305]你好,世界!隔离=531288143

i/fltter(4261):[2020-07-24 06:22:34.635681]你好,世界!隔离=531288143

i/fltter(4261):[2020-07-24 06:23:52.208643]你好,世界!隔离=531288143

i/fltter(4261):[2020-07-24 06:25:14.658737]你好,世界!隔离=531288143

i/fltter(4261):[2020-07-24 06:26:14.703225]你好,世界!隔离=531288143

i/fltter(4261):[2020-07-24 06:27:14.728071]你好,世界!隔离=531288143

i/fltter(4261):[2020-07-24 06:28:14.760309]你好,世界!隔离=531288143

这是我正在使用的代码。当我第一次执行它时,我将id 0赋予每分钟运行一次的任务。所以我尝试取消此ID,并在初始化后创建一个新ID。

void main() async { WidgetsFlutterBinding.ensureInitialized(); await AndroidAlarmManager.cancel(0); await AndroidAlarmManager.initialize(); runApp(TimeReminder()); await AndroidAlarmManager.periodic(const Duration(seconds: 5), 0, printHello); } void printHello() { final DateTime now = DateTime.now(); final int isolateId = Isolate.current.hashCode; print("[$now] Hello, world! isolate=$isolateId"); }

有人知道如何修复这个问题吗?或者一般说来,有人能给我解释一下吗?是否有可能获得我设置的所有任务的概述?

提前谢谢!

推荐答案

由于您使用的时间间隔不到1分钟,您的问题可能是系统限制。根据this comment:

从Android 5.1开始,使用AlarmManager进行定期触发的最小间隔为1分钟。因此,即使您传递了一个较小的持续时间,它也将默认为1分钟。如果您希望更频繁地调用,则应查看Handler。

更多推荐

在Android

本文发布于:2023-11-27 11:57:24,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1637970.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Android

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!