2

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

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

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

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

是否有可能通过Job Scheduler(或以任何其他方式)实现这一目标?

4

1 回答 1

2

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

有 2 个选项。

1)OneTimeWorkRequest(你需要的)。
2)PeriodicWorkRequest(周期性执行,最短15分钟,同jobScheduler)。

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

为什么 WorkManager 好。下面的图片将给出答案。 在此处输入图像描述

在此处输入图像描述

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

于 2019-04-21T18:08:23.377 回答