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

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

为了检测后台的连接更改,我尝试将Job Scheduler(如this答案中的内容)与.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)参数一起使用,但是我的问题是该工作重复进行(每15分钟一次),即使用户仍连接到Internet。

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

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

最佳答案

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

有2个选项。

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

作为Jobscheduler,WorkManager仅执行10秒。

为什么WorkManager很好。下面的图像将给出答案。
android - 当应用程序被杀死/在后台时检测连接更改-LMLPHP

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

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

09-10 06:51
查看更多