我想效仿该应用程序的一个特殊功能,称为Forest。 基本上,您可以在应用程序中启动计时器,而不必从中退出。 如果应用程序位于前台和/或屏幕关闭,则此计时器倒计时。
有大约10秒的给定宽限期,用户可以在该宽限期内退出应用程序(即按主屏幕按钮)。如果它们没有在宽限期内返回,则计时器结束并且用户失败。否则计时器将继续计数。
基本上,应用程序必须检查它是否是背景。如果是这样,启动一个10秒计时器。一旦此计时器到期,请进行一些设置,例如当应用程序返回到前台时,用户将继续/失败。
我不确定如何阅读Flutter / Dart文档,但Flutter中可用的生命周期状态是从我们这里抽象出来的。我是否需要运行一些后台代码或触发中断?我查看了可用的插件,但它们不允许15分钟以下的触发器。如何通过本机Android / iOS代码实现?
答案 0 :(得分:1)
您可以使用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:上面提供的示例代码摘自插件示例。