gpt4 book ai didi

flutter - 在 flutter 中使用 android_alarm_manager 运行后台任务

转载 作者:行者123 更新时间:2023-12-05 07:03:56 24 4
gpt4 key购买 nike

我正在尝试使用 flutter 中的 android_alarm_manager 插件定期运行一个简单的后台任务。我按照 readme 文件中的说明进行操作,它有点工作但不正确..

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

W/AlarmService( 4261): Attempted to start a duplicate background isolate. Returning...

所以我尝试取消任务并创建一个每 5 秒运行一次的新任务。但这没有成功。尽管 cancel 方法返回 true,但第一个任务仍然每分钟运行一次,而不是像 intendet 那样每 5 秒运行一次。

Performing hot restart...

Syncing files to device AOSP on IA Emulator...

W/AlarmService( 4261): Attempted to start a duplicate background isolate. Returning...

Restarted application in 2.194ms.

I/AlarmService( 4261): AlarmService started!

I/flutter ( 4261): [2020-07-24 06:21:34.697305] Hello, world! isolate=531288143

I/flutter ( 4261): [2020-07-24 06:22:34.635681] Hello, world! isolate=531288143

I/flutter ( 4261): [2020-07-24 06:23:52.208643] Hello, world! isolate=531288143

I/flutter ( 4261): [2020-07-24 06:25:14.658737] Hello, world! isolate=531288143

I/flutter ( 4261): [2020-07-24 06:26:14.703225] Hello, world! isolate=531288143

I/flutter ( 4261): [2020-07-24 06:27:14.728071] Hello, world! isolate=531288143

I/flutter ( 4261): [2020-07-24 06:28:14.760309] Hello, world! isolate=531288143

这是我正在使用的代码。当我第一次执行它时,我将 id 0 赋予了每分钟运行的任务。所以我尝试在初始化后取消这个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 :

Since Android 5.1, the minimum interval for a periodic fire using AlarmManager is 1 minute. So even if you pass a smaller duration, it will default to 1 minute. If you want to call more frequently, you should look into Handler.

关于flutter - 在 flutter 中使用 android_alarm_manager 运行后台任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63068311/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com