v0.3.2: HotDealApplication.kt
This commit is contained in:
1 parent
cd866600e6
commit
47de6bad98
1 file changed
+37
-1
@@ -1,9 +1,17 @@
|
|||||||
package com.hotdeal.alarm
|
package com.hotdeal.alarm
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
|
import android.util.Log
|
||||||
import androidx.hilt.work.HiltWorkerFactory
|
import androidx.hilt.work.HiltWorkerFactory
|
||||||
import androidx.work.Configuration
|
import androidx.work.Configuration
|
||||||
|
import com.hotdeal.alarm.data.local.preferences.AppSettings
|
||||||
|
import com.hotdeal.alarm.worker.WorkerScheduler
|
||||||
import dagger.hilt.android.HiltAndroidApp
|
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
|
import javax.inject.Inject
|
||||||
|
|
||||||
@HiltAndroidApp
|
@HiltAndroidApp
|
||||||
@@ -12,13 +20,41 @@ class HotDealApplication : Application(), Configuration.Provider {
|
|||||||
@Inject
|
@Inject
|
||||||
lateinit var workerFactory: HiltWorkerFactory
|
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
|
override val workManagerConfiguration: Configuration
|
||||||
get() = Configuration.Builder()
|
get() = Configuration.Builder()
|
||||||
.setWorkerFactory(workerFactory)
|
.setWorkerFactory(workerFactory)
|
||||||
|
.setMinimumLoggingLevel(Log.DEBUG)
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override fun onCreate() {
|
override fun onCreate() {
|
||||||
super.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)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user