Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Detect Connectivity Change When App is Killed/In Background

I'd like to detect when there is a network change (connection\disconnection) when my app is not in the foreground, so I can sync the user's data.

I have tried to use a broadcast receiver (like in this answer) but the broadcasts are no longer received when the app is closed (after Android N). It only works when the app is in the foreground.

In order to detect connectivity change in the background, I have tried to use the Job Scheduler (like in this answer) with the .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY) parameter, but my problem is that the job is done repetitively (every 15 minutes), even when the user is still connected to the internet.

My goal is to make the job once when the internet connection is regained, and then stop the job until the user disconnects and connects again. The job should be done once for every connection to the internet, and then wait until a reconnection (without repeating it).

Is it possible to achieve this with the Job Scheduler (or in any other way)?

like image 692
Tal Barda Avatar asked Oct 29 '25 06:10

Tal Barda


1 Answers

Is it possible to achieve this with the Job Scheduler?
Answer - I don't know BUT
You can use WorkManager. That is part of Android Jetpack.

There are 2 options.

1) OneTimeWorkRequest (that what you need).
2) PeriodicWorkRequest (executes periodically, min time is 15 minutes, same as jobScheduler).

WorkManager executes only 10 seconds, as jobscheduler.

Why is WorkManager good. Image in below will give answer. enter image description here

enter image description here

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

like image 114
Hayk Mkrtchyan Avatar answered Oct 31 '25 11:10

Hayk Mkrtchyan