每日观看个数 task bean

This commit is contained in:
renhaoting 2025-12-01 15:38:11 +08:00
parent 6ea2af01fe
commit f4aebf8e9c
5 changed files with 33 additions and 14 deletions

View File

@ -8,6 +8,6 @@ object VididinEvents {
const val Event_HOME_WATCH_Time_TICK = 700 const val Event_HOME_WATCH_Time_TICK = 700
const val Event_Finish_Video = 701 const val Event_Finish_One_Video = 701
} }

View File

@ -4,21 +4,20 @@ import com.ama.core.architecture.util.DateUtil
import com.ama.core.architecture.util.SpUtil import com.ama.core.architecture.util.SpUtil
import com.gamedog.vididin.VididinEvents import com.gamedog.vididin.VididinEvents
import com.gamedog.vididin.manager.taskbeans.DailyStateWatchVideoBean import com.gamedog.vididin.manager.taskbeans.DailyStateWatchVideoBean
import java.util.concurrent.ConcurrentHashMap
class DailyWatchVideoTaskHelper : BaseTaskHelper() { class DailyWatchVideoTaskHelper : BaseTaskHelper() {
private var mStateBean: DailyStateWatchVideoBean? = null private var mStateBean: DailyStateWatchVideoBean? = null
private val mWatchedMap = ConcurrentHashMap<String, Long>()
init { init {
registerEvents( { eventData-> registerEvents( { eventData->
val dataPair: Pair<String, Long> = eventData?.mData as Pair<String, Long> val dataPair: Pair<String, Long> = eventData?.mData as Pair<String, Long>
addWatchedVideoInfo(dataPair) handleVideoWatched(dataPair)
}, VididinEvents.Event_Finish_Video) }, VididinEvents.Event_Finish_One_Video)
} }
override fun loadTaskFromSp() { override fun loadTaskFromSp() {
@ -32,6 +31,7 @@ class DailyWatchVideoTaskHelper : BaseTaskHelper() {
private fun generateTodayTask() { private fun generateTodayTask() {
mStateBean?.clearDatas()
mStateBean = DailyStateWatchVideoBean(DateUtil.getCurTimeMs()) mStateBean = DailyStateWatchVideoBean(DateUtil.getCurTimeMs())
} }
@ -39,10 +39,13 @@ class DailyWatchVideoTaskHelper : BaseTaskHelper() {
return mStateBean != null && DateUtil.isToday(mStateBean?.todayStartMs!!) return mStateBean != null && DateUtil.isToday(mStateBean?.todayStartMs!!)
} }
private fun addWatchedVideoInfo(dataPair: Pair<String, Long>) {
mWatchedMap.put(dataPair.first, dataPair.second) private fun handleVideoWatched(dataPair: Pair<String, Long>) {
mStateBean?.run {
addWatchedVideoInfo(dataPair)
}
} }
} }

View File

@ -1,15 +1,32 @@
package com.gamedog.vididin.manager.taskbeans package com.gamedog.vididin.manager.taskbeans
import java.io.Serializable import java.io.Serializable
import java.util.concurrent.ConcurrentHashMap
data class DailyStateWatchVideoBean( data class DailyStateWatchVideoBean(
var todayStartMs: Long = 0, var todayStartMs: Long = 0,
var watchedVideoNum: Int = 0,
): Serializable { ): Serializable {
private val mWatchedMap = ConcurrentHashMap<String, Long>()
fun clearDatas() {
mWatchedMap.clear()
todayStartMs = 0
}
fun addWatchedVideoInfo(dataPair: Pair<String, Long>): Boolean {
if (!mWatchedMap.contains(dataPair.first)) {
mWatchedMap.put(dataPair.first, dataPair.second)
return true
}
return false
}
} }

View File

@ -4,7 +4,7 @@ class RewardConst {
companion object { companion object {
const val HOME_WATCH_DURATION = 5 * 1000L const val HOME_WATCH_DURATION = 5 * 1000L
const val HOME_WATCH_REWARD_NUM = 28 const val HOME_WATCH_REWARD_NUM = 28
const val FINISH_RATIO = 0.1F // TODO - temp value, should be 0.8F const val FINISH_RATIO = 0.05F // TODO - temp value, should be 0.8F
const val Check_Interval_MS = 50L const val Check_Interval_MS = 50L
} }
} }

View File

@ -2,7 +2,6 @@ package com.gamedog.vididin.youtubestatistic
import android.os.Handler import android.os.Handler
import android.os.Looper import android.os.Looper
import android.os.SystemClock
import com.ama.core.architecture.util.eventbus.NotifyMan import com.ama.core.architecture.util.eventbus.NotifyMan
import com.gamedog.vididin.VididinEvents import com.gamedog.vididin.VididinEvents
import com.gamedog.vididin.youtubestatistic.RewardConst.Companion.Check_Interval_MS import com.gamedog.vididin.youtubestatistic.RewardConst.Companion.Check_Interval_MS
@ -53,7 +52,7 @@ class TickerTimer() {
mTotalMs += Check_Interval_MS mTotalMs += Check_Interval_MS
if (mTotalMs >= RewardConst.FINISH_RATIO * mVideoDurationMs) { if (mTotalMs >= RewardConst.FINISH_RATIO * mVideoDurationMs) {
mHasFinishCurVideo = true mHasFinishCurVideo = true
NotifyMan.instance().sendEvent(VididinEvents.Event_Finish_Video, NotifyMan.instance().sendEvent(VididinEvents.Event_Finish_One_Video,
NotifyMan.NotifyData(Pair(mVideoId, System.currentTimeMillis()))) NotifyMan.NotifyData(Pair(mVideoId, System.currentTimeMillis())))
} }
} }