如何每 15 秒在后台 运行 一些 dart 代码

How to run some dart code in the background, every 15 seconds

我创建了每 15 秒检查一次通话记录列表的应用程序。我已经使用 Timer.periodic() 来实现这一点。一切正常,但前提是应用程序不在后台 运行。应用程序在后台运行几分钟后,Timer.periodic 安排的任务不再执行。我试过使用 android_alarm_manager https://pub.dev/packages/android_alarm_manager 但它根本不起作用。它正在记录 /FlutterBackgroundExecutor(11431): Starting 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

还有几个。