Я хочу запускать периодическую задачу каждые 3 часа с помощью нового WorkManager. Рабочий, инициированный при создании приложения. Для этого я использую следующий код:
public class ApplicationCommon extends MultiDexApplication {
@Override
public void onCreate() {
super.onCreate();
... some init code
// some code that I don't want to run again for every periodic worker...
... some analytics
}
Внутри MainActivity
@Override
public void onCreate() {
super.onCreate();
runCouponValidatorWorker()
}
fun runCouponValidatorWorker() {
val constraints = Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build()
val worker = PeriodicWorkRequestBuilder<CouponValidatorWorker>(3, TimeUnit.HOURS).setConstraints(constraints).build()
WorkManager.getInstance()?.enqueueUniquePeriodicWork("couponValidatorWorker", ExistingPeriodicWorkPolicy.REPLACE, worker)
}
Однако похоже, что рабочий, когда запускается периодически, каждый раз создает новый экземпляр класса Application и, следовательно, приводит к повторному запуску большого количества кода инициализации, как если бы приложение снова запускалось пользователем (что вызывает false -положительная аналитика, вызовы API и т. д.). Есть ли способ избежать этого / иметь флаг, указывающий, что приложение было инициировано работником?