From 47de6bad98739943f6c9a3e1dd6655940fd70c1c Mon Sep 17 00:00:00 2001 From: sanjeok77 <1+sanjeok77@noreply.localhost> Date: Mon, 24 Aug 2026 22:34:20 +0000 Subject: [PATCH] v0.3.2: HotDealApplication.kt --- .../com/hotdeal/alarm/HotDealApplication.kt | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/hotdeal/alarm/HotDealApplication.kt b/app/src/main/java/com/hotdeal/alarm/HotDealApplication.kt index 2b984ab..616492f 100644 --- a/app/src/main/java/com/hotdeal/alarm/HotDealApplication.kt +++ b/app/src/main/java/com/hotdeal/alarm/HotDealApplication.kt @@ -1,9 +1,17 @@ package com.hotdeal.alarm import android.app.Application +import android.util.Log import androidx.hilt.work.HiltWorkerFactory import androidx.work.Configuration +import com.hotdeal.alarm.data.local.preferences.AppSettings +import com.hotdeal.alarm.worker.WorkerScheduler import dagger.hilt.android.HiltAndroidApp +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.SupervisorJob +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.launch import javax.inject.Inject @HiltAndroidApp @@ -12,13 +20,41 @@ class HotDealApplication : Application(), Configuration.Provider { @Inject lateinit var workerFactory: HiltWorkerFactory + @Inject + lateinit var workerScheduler: WorkerScheduler + + @Inject + lateinit var appSettings: AppSettings + + private val applicationScope = CoroutineScope(SupervisorJob() + Dispatchers.Main) + override val workManagerConfiguration: Configuration get() = Configuration.Builder() .setWorkerFactory(workerFactory) + .setMinimumLoggingLevel(Log.DEBUG) .build() override fun onCreate() { super.onCreate() - // Application initialization + // 앱 시작 시 백그라운드 폴링 즉시 등록/갱신 + ensurePollingScheduled() + } + + /** + * 앱이 시작될 때마다 백그라운드 폴링이 등록되어 있는지 확인하고, + * 없으면 즉시 등록합니다. UPDATE 정책으로 항상 최신 Worker가 동작합니다. + */ + private fun ensurePollingScheduled() { + applicationScope.launch { + try { + val interval = appSettings.pollingInterval.first() + Log.d("HotDealApp", "백그라운드 폴링 등록/갱신: ${interval}분 간격") + workerScheduler.schedulePeriodicPolling(interval.toLong()) + } catch (e: Exception) { + Log.e("HotDealApp", "폴링 스케줄 등록 실패: ${e.message}", e) + // 기본값으로 폴백 + workerScheduler.schedulePeriodicPolling(WorkerScheduler.DEFAULT_INTERVAL_MINUTES) + } + } } }