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