Как ускорить частоту вызова функции WorkManager при запущенном Activity?

Созданным в onCreate экземпляром WorkManager

val workRequest = PeriodicWorkRequestBuilder<FetchJsonWorker>(repeatInterval = 15, TimeUnit.MINUTES)
.build()
WorkManager.getInstance(this).enqueueUniquePeriodicWork("DataFetchWork",
    ExistingPeriodicWorkPolicy.UPDATE, workRequest)

я в фоне периодически раз в 15 минут вызываю функцию, которая использует в классе в отдельном kt файле экземпляры Retrofit, Notification, еще и БД ROOM позже добавлю

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

    override suspend fun doWork(): Result {
        return try {
            val response = RetrofitInstance.api.get("anynetworkfile.txt")
                ...
                showNotification("Новое сообщение", response)
            }
            Result.success()
        } catch (e: Exception) {
            Result.retry()
        }
    }

    private fun showNotification(title: String, content: String, t: Long) {
        val channelId = "fetch_json_channel"
        val notificationManager = applicationContext.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager

        val channel = NotificationChannel(...)
        notificationManager.createNotificationChannel(channel)

        val notification = NotificationCompat.Builder(applicationContext, channelId)
            .setContentTitle(title)
            .setContentText(content)
            .setSmallIcon(android.R.drawable.ic_dialog_info)
            .setPriority(NotificationCompat.PRIORITY_HIGH)
            .build()

        notificationManager.notify(id, notification)
    }
}

Задача - при открытом приложении вызывать эту же функцию doWork() раз не в 15 минут, а, например, раз в 15 секунд. Отловить запуск и завершение MainActivity для новой корутины в OnCreate с частым циклом опроса не проблема, но как она должна вызывать fun doWork() в классе FetchJsonWorker? Или можно как-то ускорять WorkManager? Или придется создавать еще одни экземпляры Retrofit, Notification и ROOM в контексте MainActivity? Я пока не очень разобрался с контекстами и рисками утечек памяти, прошу помочь примером. Спасибо.


Ответы (0 шт):