【发布时间】:2021-02-10 12:36:15
【问题描述】:
我正在尝试连续调用该方法,但是当我锁定手机屏幕或按下主页按钮时,该方法不再被调用。所以请建议如何在后台运行该方法。
【问题讨论】:
标签: flutter dart methods background
我正在尝试连续调用该方法,但是当我锁定手机屏幕或按下主页按钮时,该方法不再被调用。所以请建议如何在后台运行该方法。
【问题讨论】:
标签: flutter dart methods background
您必须使用插件,例如 https://pub.dev/packages/background_fetch
还有其他类似的插件你可以试试。
“Background Fetch 是一个非常简单的插件,它大约每 15 分钟在后台唤醒一个应用程序,提供一个短的后台运行时间。这个插件将在后台获取事件发生时执行你提供的 callbackFn。”
【讨论】:
您将使用 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 调用它。
【讨论】: