【问题标题】:how to run flutter methods in background? [duplicate]如何在后台运行颤振方法? [复制]
【发布时间】:2021-02-10 12:36:15
【问题描述】:

我正在尝试连续调用该方法,但是当我锁定手机屏幕或按下主页按钮时,该方法不再被调用。所以请建议如何在后台运行该方法。

【问题讨论】:

    标签: flutter dart methods background


    【解决方案1】:

    您必须使用插件,例如 https://pub.dev/packages/background_fetch

    还有其他类似的插件你可以试试。

    “Background Fetch 是一个非常简单的插件,它大约每 15 分钟在后台唤醒一个应用程序,提供一个短的后台运行时间。这个插件将在后台获取事件发生时执行你提供的 callbackFn。”

    【讨论】:

    • 我试过这个插件。但安装此插件后出现此错误。
    • 出了什么问题:无法确定任务 ':app:processDebugResources' 的依赖关系。 > 无法解析配置 ':app:debugRuntimeClasspath' 的所有任务依赖关系。 > 找不到 com.transistorsoft:tsbackgroundfetch:+ 的任何匹配项,因为没有可用的 com.transistorsoft:tsbackgroundfetch 版本。在以下位置搜索:-dl.google.com/dl/android/maven2/com/transistorsoft/…-dl.google.com/dl/android/maven2/com/transistorsoft/…
    • 以上是我在运行我的应用程序时遇到的错误
    • 我有同样的问题
    【解决方案2】:

    您将使用 Flutter 为 Android 应用程序使用 Android 警报管理器

    https://pub.dev/packages/android_alarm_manager

    import 'package:android_alarm_manager/android_alarm_manager.dart';
    
    void printHello() {
      final DateTime now = DateTime.now();
      final int isolateId = Isolate.current.hashCode;
      print("[$now] Hello, world! isolate=${isolateId} function='$printHello'");
    }
    
    main() async {
      final int helloAlarmID = 0;
      await AndroidAlarmManager.initialize();
      runApp(...);
      await AndroidAlarmManager.periodic(const Duration(minutes: 1), helloAlarmID, printHello);
    }
    

    如您所见,很简单,您只需要创建一个函数并使用 AndroidAlarmManager.periodic 调用它,记得在您的 android manifest 上添加权限。

    如果您需要适用于 Android 和 iOS 的解决方案,您可以使用平台渠道https://flutter.dev/docs/development/platform-integration/platform-channels 您可以使用平台通道从 android 和 iOS 调用原生代码,例如您可以创建原生后台服务并从 Flutter 调用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-14
      • 1970-01-01
      • 2020-02-12
      • 2019-05-03
      • 1970-01-01
      • 2021-08-08
      • 2021-12-18
      • 2016-02-03
      相关资源
      最近更新 更多