Почему мой Workmanager никогда не имеет подключения к Интернету при запуске в фоновом режиме?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Почему мой Workmanager никогда не имеет подключения к Интернету при запуске в фоновом режиме?

Сообщение Anonymous »

В моем приложении Android "Tracker" Я использую Workmanager для отслеживания местоположения пользователя и загружать его в API. Удаленный API

Но на заднем плане второй шаг разрывается (то есть, когда я внося работу и перемещаюсь в Homescreen, но не закрываю приложение), потому что он всегда отсутствует. AndroidManifest.xml : Я планирую работу, подобную этой, в моем mainactivity.kt -задержка 20S позволяет мне пойти куда-нибудь еще на переднем плане перед выполнением работы:

Код: Выделить всё

val oneTimeRequest = OneTimeWorkRequestBuilder()
.setInitialDelay(20, TimeUnit.SECONDS)
.build()
WorkManager.getInstance(context)
.enqueue(oneTimeRequest)
и местоположение worker.kt выглядит как ниже. Частная вспомогательная функция isnetworkavailable () доказывает, что всегда, когда у меня открывается приложение в фоновом режиме, но не на экране, нет интернета! Почему?

Код: Выделить всё

class LocationWorker(
context: Context,
workerParams: WorkerParameters
): CoroutineWorker(context, workerParams) {

override suspend fun doWork(): Result {

// ... (1. Getting the location and storing it in a local database)

if (isNetworkAvailable(applicationContext)) {
// Always get here when the app is visible on-screen
Log.d("LocationWorker", "Uploading location.")
// ... (2. Uploading the data from the database to a remote API)
} else {
// Always get here when not having the app on-screen
Log.d("LocationWorker", "Network not available.")
}
}

private fun isNetworkAvailable(context: Context): Boolean {
val connectivityManager = context.getSystemService(ConnectivityManager::class.java)
val network = connectivityManager.activeNetwork ?: return false
val capabilities = connectivityManager.getNetworkCapabilities(network) ?: return false
return capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) &&
capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)
}
Я гарантировал, что само устройство включено Wi -Fi, не лишается разрешений, когда не используются и все разрешения разрешены.
Обратите внимание, что у меня есть minsdk = 29 (Android 10) и использую эмулятор Pixel 7 API 35 для разработки.>

Подробнее здесь: https://stackoverflow.com/questions/794 ... ing-in-the
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»