Android Flutter App 中的持久后台工作程序,每 30 秒获取一次 Web API

Posted

技术标签:

【中文标题】Android Flutter App 中的持久后台工作程序,每 30 秒获取一次 Web API【英文标题】:Persistent background worker in Android Flutter App that fetch Web API every 30 seconds 【发布时间】:2021-10-03 10:56:41 【问题描述】:

我正在 Flutter 上开发仅限 android 的应用程序。我的应用需要每 30 秒在后台调用一些 Web API。即使用户或 Android 操作系统关闭了我的应用的主要活动,后台工作人员也应该继续运行。

我知道过于频繁地在后台执行某项操作会很快耗尽电池电量,这被认为是不好的做法。但是,我仍然需要每 30 秒执行一次。

我的应用的目标平台是 Android 7.0 或更高版本。

有什么想法可以在 Flutter 中实现吗?

【问题讨论】:

【参考方案1】:

尝试添加 Timer 我已经在我的应用中使用了 Timer(下面的代码)我的问题解决了

计时器:倒计时计时器,可配置为触发一次或 反复。

在你的类中声明定时器

 Timer timer;
 int counter = 0;

为定时器创建initState()方法

 @override
  void initState() 
    super.initState();
    timer = Timer.periodic(
      Duration(seconds: 30),
      (Timer t) => addValue(),
    );
  

增加addValue的创建函数

void addValue() 
    setState(() 
      counter++;
    );
    

您的页面每 30 秒自动重新加载一次

或者您只需在 API 调用函数中使用 setState 方法,如下所示

setState(()   );

【讨论】:

当我的应用程序的主窗口不活动时,您的解决方案会在后台运行吗?

以上是关于Android Flutter App 中的持久后台工作程序,每 30 秒获取一次 Web API的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 持久化_shared_preferences

签名发布后尝试调试时 Flutter android App 崩溃

无法解析 Flutter 应用程序的 android/app/build.gradle 文件中的符号 GradleException

Android项目创建Flutter module后运行编译失败问题

Android项目创建Flutter module后运行编译失败问题

Flutter 版本号升不上去 Android 打包依然没变