/
iezhelev
/
cppsh2
Обзор
Документация
Войти
/
iezhelev
/
cppsh2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
cppsh/src/main/java/ru/ideaplatform/cppsh/MainApplication.kt
106 строк
3 KB
iezhelev
first commit
10 май 2025, 14:06
10 май 2025, 14:06
cef3ce0
Код
Авторство
О чём код?
package ru.ideaplatform.cppsh import android.app.Application import android.content.Context import android.util.Log import androidx.camera.camera2.Camera2Config import androidx.camera.core.CameraXConfig import androidx.hilt.work.HiltWorkerFactory import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.LifecycleRegistry import androidx.lifecycle.ProcessLifecycleOwner import androidx.work.Configuration import androidx.work.WorkInfo import androidx.work.WorkManager import androidx.work.WorkQuery import androidx.work.impl.schedulers import dagger.hilt.EntryPoint import dagger.hilt.EntryPoints import dagger.hilt.InstallIn import dagger.hilt.android.HiltAndroidApp import dagger.hilt.components.SingletonComponent import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.asExecutor //import com.yandex.mapkit.MapKitFactory import ru.ideaplatform.cppsh.database.table.upload.UploadRepository import ru.ideaplatform.cppsh.module.network.WebSocketModule import ru.ideaplatform.cppsh.worker.SimpleScheduler import javax.inject.Inject @HiltAndroidApp class MainApplication : Application(), Configuration.Provider, CameraXConfig.Provider { @Inject lateinit var workManager: WorkManager @Inject lateinit var uploadRepo: UploadRepository @Inject lateinit var scheduler: SimpleScheduler //@Inject //lateinit var wsModule: WebSocketModule @EntryPoint @InstallIn(SingletonComponent::class) interface HiltWorkerFactoryEntryPoint { fun workerFactory(): HiltWorkerFactory } override val workManagerConfiguration: Configuration = Configuration.Builder() .setExecutor(Dispatchers.Default.asExecutor()) .setWorkerFactory( EntryPoints.get( this, HiltWorkerFactoryEntryPoint::class.java ).workerFactory() ) .setTaskExecutor(Dispatchers.Default.asExecutor()) .setMaxSchedulerLimit(50) .build() private fun purgeOldWorkRequests() { val workQuery = WorkQuery.Builder .fromTags(listOf("RECURRING_SYNC_WORK")) .addStates(listOf(WorkInfo.State.ENQUEUED, WorkInfo.State.RUNNING)) .build() workManager.getWorkInfosLiveData(workQuery).observeForever { workInfos -> workInfos?.forEach { workInfo -> if (workInfo.state == WorkInfo.State.ENQUEUED || workInfo.state == WorkInfo.State.RUNNING) { workManager.cancelWorkById(workInfo.id) } } } } override fun getCameraXConfig(): CameraXConfig { return CameraXConfig.Builder.fromConfig(Camera2Config.defaultConfig()) .setMinimumLoggingLevel(Log.ERROR).build() } override fun onCreate() { super.onCreate() purgeOldWorkRequests() //MapKitFactory.setApiKey("b4643ec9-d008-477d-8351-8c7e232db53b") //MapKitFactory.initialize(this.applicationContext) //WorkManagerUtils.purgeAllWork(this) //ProcessLifecycleOwner.get().lifecycle.addObserver(wsModule) appContext = applicationContext } override fun onTerminate() { uploadRepo.cleanup() scheduler.cleanup() super.onTerminate() } companion object { lateinit var appContext: Context private set } }