Я згоден з відповіддю, запропонованою @rds.
Майте на увазі, що CONNECTIVITY_ACTION застаріло на рівні API 28.
Якщо у вас є вимога щодо визначення стану Wi-Fi (підключення / відключення), незважаючи на те, що програму вбито, і ви хочете націлити на останню версію, у вас немає великого вибору.
Вам потрібно використовувати connectivityManager.registerNetworkCallback(networkRequest, networkCallback)
Питання в тому, що ви не можете використовувати BroadcastReceiver, то як тоді?
Ви можете використовувати JobScheduler або краще, якщо WorkManager (періодичний запит). Чому періодично, тому що якщо це OneTimeRequest, він зможе запуститись лише один раз і продовжувати слухати, поки ваша програма знаходиться на передньому плані.
Документація говорить:
Зворотні дзвінки продовжуватимуть викликатись до виходу програми або посилання #unregisterNetworkCallback (NetworkCallback)}.
Як тільки додаток буде вбито або видалено зі списку останніх програм, networkCallback не зможе слухати.
Отже, вам потрібні такі періодичні завдання, щоб програма постійно слухала. Скільки має бути тривалість? Це залежить від вас і залежить від конкретного випадку.
Я знаю, що це трохи потворно, але це так. Однією із проблем може бути те, що якщо пристрій користувача перебуває в режимі Doze або програма перебуває в режимі очікування, ваша робота може затриматися.
targetSdkVersionN або пізнішої версії?