flutter - 如何每隔15秒在后台运行一些Dart代码

标签 flutter dart android-alarms

我创建了一个应用程序,该应用程序每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/

相关文章:

android - 因为来自 sdk 的 flutter_test 的每个版本都依赖于路径 1.8.1,而 easy_localization 3.0.0 依赖于路径 >=1.8.0-nullsafety

flutter - Flutter:模态表中的单选按钮是这样的

flutter - Flutter滚动条防止滚动条出现在水平 ListView 中

Android 离线可靠日期持续时间

android - 预定的警报从不调用接收器类

user-interface - 在 BottomNavigationBar 的屏幕之间水平滑动?

flutter - 如何在flutter中使用当前主题保存应用程序的状态?

dart - 自动将映射值初始化为 0 的习惯用法

android - 如何计算文本字段中的多少行?

android - 如何在设置闹钟前查看闹钟时间是否已过?