Но на заднем плане второй шаг разрывается (то есть, когда я внося работу и перемещаюсь в Homescreen, но не закрываю приложение), потому что он всегда отсутствует. AndroidManifest.xml :
Код: Выделить всё
Код: Выделить всё
val oneTimeRequest = OneTimeWorkRequestBuilder()
.setInitialDelay(20, TimeUnit.SECONDS)
.build()
WorkManager.getInstance(context)
.enqueue(oneTimeRequest)
Код: Выделить всё
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)
}
Обратите внимание, что у меня есть minsdk = 29 (Android 10) и использую эмулятор Pixel 7 API 35 для разработки.>
Подробнее здесь: https://stackoverflow.com/questions/794 ... ing-in-the
Мобильная версия