当应用程序被杀死/在后台时检测连接更改

时间:2019-04-21 17:55:12

标签: android broadcastreceiver jobservice

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

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

为了检测后台的连接性变化,我尝试将Job Scheduler参数与.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)一起使用(例如在this答案中使用),但是我的问题是工作即使用户仍保持连接,该操作也会重复执行(每15分钟一次)。

我的目标是在重新获得Internet连接后使该工作一次,然后停止该工作,直到用户断开连接并再次连接。对于每个与Internet的连接,应一次完成该作业,然后等待直到重新连接(不再重复)。

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

1 个答案:

答案 0 :(得分:1)

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

有2个选项。

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

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

为什么WorkManager很好。下面的图像将给出答案。 enter image description here

enter image description here

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