#android #kotlin #android-workmanager #background-task
#Android #kotlin #android-workmanager #фоновая задача
Вопрос:
Я создаю приложение для Android с использованием Kotlin и Android Studio. Я пытаюсь запустить фоновую задачу, даже если приложение мертво или полностью закрыто. Я использую WorkManager. Но, похоже, он запускается только один раз.
Это мой рабочий класс.
import android.content.Context
import android.util.Log
import androidx.work.Worker
import androidx.work.WorkerParameters
class RegisterReceiversWorker(context: Context, workerParams: WorkerParameters): Worker(context, workerParams) {
companion object {
const val WORK_NAME: String = "REGISTER_RECEIVERS_WORKER"
}
override fun doWork(): Result {
registerReceivers()
return Result.success();
}
private fun registerReceivers() {
Log.i("REGISTER_RECEIVER", "Greeting from the background")
}
}
Как вы можете видеть в коде, я распечатываю сообщение в logcat.
Затем я запускаю worker, как указано в MainActivity, при первом открытии приложения.
val workRequest = PeriodicWorkRequestBuilder<RegisterReceiversWorker>(10, TimeUnit.SECONDS).build()
val workManager = WorkManager.getInstance(applicationContext)
workManager.enqueueUniquePeriodicWork(RegisterReceiversWorker.WORK_NAME, ExistingPeriodicWorkPolicy.REPLACE, workRequest);
Как вы можете видеть, он должен распечатывать сообщение каждые десять секунд. Но когда я запускаю приложение, оно распечатывает сообщение в logcat только один раз. Что не так с моим кодом? Как я могу убедиться, что он запускается каждые 10 секунд в фоновом режиме, даже когда приложение закрыто?
Ответ №1:
Периодическая работа должна быть запланирована с интервалом, превышающим MIN_PERIODIC_INTERVAL_MILLIS
.