VidiDin-Android/app/src/main/java/com/gamedog/vididin/manager/TaskManager.kt

68 lines
1.7 KiB
Kotlin
Raw Normal View History

2025-11-20 09:45:17 +00:00
package com.gamedog.vididin.manager
import com.ama.core.architecture.util.FileUtil
import com.gamedog.vididin.main.fragments.task.TaskBean
import com.google.gson.GsonBuilder
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock
import kotlinx.coroutines.*
class TaskManager private constructor() {
companion object {
@Volatile
private var instance: TaskManager? = null
fun instance(): TaskManager {
return instance ?: synchronized(this) {
instance ?: TaskManager().also {
instance = it
}
}
}
}
private val mutex = Mutex()
@Volatile
private var initialized = false
private var mTaskConfigBean: TaskBean? = null
private val mGson = GsonBuilder().create()
init {
loadTaskConfigAsync()
}
suspend fun getTaskConfig(): TaskBean? = mutex.withLock {
if (!initialized) {
loadTaskConfigFromAsset()
}
return mTaskConfigBean
}
private fun loadTaskConfigAsync() {
CoroutineScope(Dispatchers.IO).launch {
mutex.withLock {
if (!initialized) {
loadTaskConfigFromAsset()
}
}
}
}
private suspend fun loadTaskConfigFromAsset() {
return withContext(Dispatchers.IO) {
val configStr = FileUtil.readAssetsFile("taskConfig.json")
mTaskConfigBean = mGson.fromJson(configStr, TaskBean::class.java)
initialized = true
}
}
2025-11-25 06:59:50 +00:00
fun getHomeWatchDurationRewardNum(): Int {
return 28; // TODO - mTaskConfigBean.xxxx
}
2025-11-20 09:45:17 +00:00
}