我正在开发一个Flutter应用程序,旨在用于控制连接到本地网络的物联网设备。
不幸的是,在测试应用程序时,我遇到了以下问题:根据iOS设置应用程序,即使屏幕时间很短,该应用程序也负责大部分当前电池耗电量。换句话说,该应用程序在后台运行时会耗尽手机的电池。
我已经对这个问题进行了一些研究,并得出结论,Flutter应用程序在用户返回主屏幕或切换到其他应用程序时应该被挂起。 事实上,有无数的文章描述了即使应用程序已被挂起仍然执行代码的方法。
但对我来说似乎并非如此。为了测试目的,我创建了一个周期性计时器,每秒钟打印一条消息。我还通过WidgetsBindingObserver监听应用程序生命周期状态更改。 这是我得到的输出: 正如您所看到的,即使应用程序已通过我按下Home按钮暂停,计时器仍然处于活动状态。
有没有一种方法在用户将其发送到后台时正确挂起应用程序?
技术信息:
Flutter Doctor 输出:
这个控制台输出是在运行着iOS 14.4的iPhone 8上生成的,不过我也在Android上遇到了类似的问题。
提前感谢,ThePC007。
不幸的是,在测试应用程序时,我遇到了以下问题:根据iOS设置应用程序,即使屏幕时间很短,该应用程序也负责大部分当前电池耗电量。换句话说,该应用程序在后台运行时会耗尽手机的电池。
我已经对这个问题进行了一些研究,并得出结论,Flutter应用程序在用户返回主屏幕或切换到其他应用程序时应该被挂起。 事实上,有无数的文章描述了即使应用程序已被挂起仍然执行代码的方法。
但对我来说似乎并非如此。为了测试目的,我创建了一个周期性计时器,每秒钟打印一条消息。我还通过WidgetsBindingObserver监听应用程序生命周期状态更改。 这是我得到的输出: 正如您所看到的,即使应用程序已通过我按下Home按钮暂停,计时器仍然处于活动状态。
有没有一种方法在用户将其发送到后台时正确挂起应用程序?
技术信息:
Flutter Doctor 输出:
[✓] Flutter (Channel stable, 2.2.0, on macOS 11.3.1 20E241 darwin-arm, locale en-US)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[✓] Xcode - develop for iOS and macOS
[✗] Chrome - develop for the web (Cannot find Chrome executable at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome)
! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.
[✓] Android Studio (version 4.1)
[✓] VS Code (version 1.56.2)
[✓] Connected device (2 available)
! Doctor found issues in 1 category.
这个控制台输出是在运行着iOS 14.4的iPhone 8上生成的,不过我也在Android上遇到了类似的问题。
提前感谢,ThePC007。
AppLifecycleState.paused
时,我当然可以取消所有计时器,但考虑到应用程序仍在运行(根据我所找到的信息),我相信问题可能出在其他地方。我担心即使取消所有计时器后,能源消耗可能仍然很高。 - undefined