gpt4 book ai didi

service - Flutter - Dart 中的后台服务(仅当应用程序可见时)

转载 作者:IT王子 更新时间:2023-10-29 06:45:14 24 4
gpt4 key购买 nike

我需要一个 flutter 的后台服务,这使得 http.get(...) 变得非常微小

此服务应在应用程序运行时在后台运行。如果应用程序关闭,后台服务也应该停止。当应用启动时,后台服务也应该启动。

我只能找到提供后台服务的包,当应用程序关闭时,它也会运行 - 就像这个例子:https://medium.com/flutter-io/executing-dart-in-the-background-with-flutter-plugins-and-geofencing-2b3e40a1a124

也许我要找的不是所谓的“后台服务”?

这是一些代码,我想在这个后台服务/任务中运行...

Timer.periodic(Duration(seconds: 60), (Timer t) => checkForUpdates());    

最佳答案

我遇到了同样的问题。离开应用程序后,Timer.periodic 会在后台持续运行一段无法控制的时间。我的解决方案是这样的:

class CollectStampsState extends State<CollectStamps> with WidgetsBindingObserver { 
Timer timer;

...

@override
void didChangeAppLifecycleState(AppLifecycleState state) {
if (state != AppLifecycleState.resumed) {
timer.cancel();
} else {
if (!timer.isActive) {
timer = Timer.periodic(Duration(seconds: 30), (Timer t) => yourFunction());
}
}

@override
void initState() {
super.initState();
timer = Timer.periodic(Duration(seconds: 30), (Timer t) => yourFunction());
WidgetsBinding.instance.addObserver(this);
}

@override
void dispose() {
timer?.cancel();
WidgetsBinding.instance.removeObserver(this);
super.dispose();
}

@override
Widget build(BuildContext context) {
...
}
}

您还可以保存 AppLifecycleState,如果您想在其他地方使用它,或者更改不同 AppLifecycleStates 的行为。但是像这样,计时器仅在应用程序位于前台时才处于事件状态。一旦它进入后台,计时器就会被取消。

关于service - Flutter - Dart 中的后台服务(仅当应用程序可见时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56227004/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com