【问题标题】:Detect Connectivity Change When App is Killed/In Background检测应用程序被杀死/在后台时的连接变化
【发布时间】:2019-04-21 17:55:12
【问题描述】:

我想在我的应用不在前台时检测网络何时发生变化(连接\断开),以便我可以同步用户的数据。

我曾尝试使用broadcast receiver(如this 答案),但当应用程序关闭时(Android N 之后)不再接收广播。它仅在应用程序处于前台时有效。

为了检测后台的连接变化,我尝试使用Job Scheduler(如this 答案)和.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY) 参数,但我的问题是工作重复完成(每15分钟),即使用户仍连接到互联网。

我的目标是在重新连接互联网后一次完成该作业,然后停止该作业,直到用户断开连接并再次连接。每次连接到 Internet 时,都应该一次完成这项工作,然后等到重新连接(不要重复)。

是否可以使用Job Scheduler(或任何其他方式)来实现这一点?

【问题讨论】:

  • 工作经理是一个不错的选择。因为它将决定运行网络广播还是使用作业调度程序。

标签: android broadcastreceiver jobservice


【解决方案1】:

是否可以使用 Job Scheduler 来实现这一点?
答案 - 我不知道,但是
您可以使用 WorkManager。这是 Android Jetpack 的一部分。

有 2 个选项。

1) OneTimeWorkRequest(即您所需要的)。
2) PeriodicWorkRequest(周期性执行,最短时间为15分钟,与jobScheduler相同)。

WorkManager 只执行 10 秒,作为作业调度程序。

为什么 WorkManager 好。下面的图片将给出答案。

文档 - https://developer.android.com/topic/libraries/architecture/workmanager

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2015-05-15
  • 1970-01-01
  • 2020-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-08
  • 1970-01-01
相关资源
最近更新 更多