这个应用程序有一个特殊的功能,叫做 Forest,我想效仿。 基本上你在应用程序中启动一个计时器,你不会从它切换出来。 如果应用程序在前台和/或屏幕关闭时,此计时器会倒计时。
有大约 10 秒的给定宽限期,用户可以在此期间退出应用程序(即按主页按钮)。如果他们没有在宽限期内返回,则计时器结束并且用户失败。否则计时器继续计数。
基本上,应用程序必须检查它是否是背景。如果是,则启动 10 秒计时器。一旦这个计时器到期,设置一个位,这样当应用程序回到前台时,用户继续/失败。
我不确定如何在阅读 Flutter/Dart 文档时做到这一点,Flutter 中可用的生命周期状态已从我们这里抽象出来。我是否必须运行一些后台代码或触发中断?我查看了可用的插件,但它们不允许在 15 分钟以下触发。这是如何在原生 Android/iOS 代码中实现的?
最佳答案
您可以使用 Android alarm manager .当警报触发时,您可以通过它运行一些后台任务。
import 'package:android_alarm_manager/android_alarm_manager.dart';
void printHello() {
final DateTime now = new DateTime.now();
final int isolateId = Isolate.current.hashCode;
print("[$now] Hello, world! isolate=${isolateId} function='$printHello'");
}
main() async {
final int helloAlarmID = 0;
runApp(...);
await AndroidAlarmManager.periodic(const Duration(minutes: 1), helloAlarmID, printHello);
}
即使应用程序结束,也会大致每分钟打印“Hello world”。 PS:上面提供的示例代码取自插件示例。
关于android - 一旦应用程序进入后台,在一定持续时间后 flutter 运行代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53790170/