我创建了一个应用程序,该应用程序每15秒检查一次通话记录列表。我已经使用Timer.periodic()实现了这一点。一切正常,但前提是应用未在后台运行。几分钟后,当应用程序在后台运行时,Timer.periodic安排的任务不再执行。我试图使用android_alarm_manager https://pub.dev/packages/android_alarm_manager,但它根本不起作用。它正在记录/ FlutterBackgroundExecutor(11431):正在启动AlarmService ...,但是什么也没发生。
import 'dart:isolate';
import 'package:flutter/material.dart';
import 'package:android_alarm_manager/android_alarm_manager.dart';
void main() async{
await WidgetsFlutterBinding.ensureInitialized();
await AndroidAlarmManager.initialize();
runApp(MyApp());
final int helloAlarmID = 0;
await AndroidAlarmManager.periodic(Duration(seconds: 5), helloAlarmID, printHello);
}
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MyHomePage(),
);
}
}
void printHello() {
final DateTime now = DateTime.now();
final int isolateId = Isolate.current.hashCode;
print("[$now] Hello, world! isolate=${isolateId} function='$printHello'");
}
我还有其他实现目标的可能性吗?
最佳答案
Android将背景使用时间限制为每15分钟左右。 pub.dev上有几个软件包,即使关闭该应用程序,也可以在后台运行代码。但是我不认为它们中的任何一个都能每15秒运行一次代码。
套餐包括:
background_fetch
工作经理
flutter_background_service
还有更多。
关于flutter - 如何每隔15秒在后台运行一些Dart代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64620333/