首页 > 解决方案 > 如何为互联网连接事件注册应用程序侦听器?

问题描述

我有一个在 Android 和 iOS 上运行的应用程序颤振。

此应用程序用于没有任何互联网连接的地区。当用户到达某个有互联网连接的地方时,必须将所有离线数据发送到服务器。

让后台任务运行并循环检查互联网连接,甚至是重复的计划任务,都不是一种选择,因为:

我想知道如何注册一种监听器,监听操作系统广播的“互联网连接事件”,当它们发生时,这将唤醒我的应用程序并触发回调。

然后,我不必让不必要的后台任务无限运行,但是当手机连接到互联网时,即使我的应用程序关闭/休眠,我仍然可以完成这项工作。

我怎么能在颤动中做到这一点?

标签: flutterdart

解决方案


有一个用于监听连接状态的包,称为connectivity_plus,您可以像这样订阅流:

    import 'package:connectivity_plus/connectivity_plus.dart';

@override
initState() {
  super.initState();

  subscription = Connectivity().onConnectivityChanged.listen((ConnectivityResult result) {
    // Got a new connectivity status!
  })
}

// Be sure to cancel subscription after you are done
@override
dispose() {
  super.dispose();

  subscription.cancel();
}

但是在文档中,它明确指出,从 Android O 开始,连接更改不再在后台传达给 Android 应用程序。您应该始终在应用程序恢复时检查连接状态。广播仅在您的应用程序处于前台时才有用。

你可能想研究一下,看看是否有可能在后台这样做。这是一个类似的问题,可能会对您有所帮助


推荐阅读