[宣传视频] refactor: 非Sass环境默认只从本地读取配置数据;
feat: 请求数据成功但是数据为空时,使用本地配置数据,保证有内容能展示;
This commit is contained in:
@@ -5,6 +5,7 @@ import android.content.Context
|
||||
import android.text.TextUtils
|
||||
import com.google.gson.reflect.TypeToken
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import com.mogo.commons.debug.DebugConfig
|
||||
import com.mogo.eagle.core.data.BaseData
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager
|
||||
@@ -75,7 +76,22 @@ object MediaDataSourceManager {
|
||||
if (!mMediaDataSourceListenerMap.containsKey(tag)) {
|
||||
mMediaDataSourceListenerMap[tag] = dataSourceListener
|
||||
}
|
||||
startGetMediaDataSourceLoop()
|
||||
val isSassProject = isSassProject()
|
||||
CallerLogger.i(
|
||||
TAG,
|
||||
"init, 初始化环境 isSassProject=$isSassProject"
|
||||
)
|
||||
if (isSassProject) {
|
||||
startGetMediaDataSourceLoop()
|
||||
} else {
|
||||
CallerLogger.i(
|
||||
TAG,
|
||||
"init, 使用本地配置数据"
|
||||
)
|
||||
//非Sass环境下后端没有实现可配置,默认只走本地配置
|
||||
val localAdDataList = getMediaDataFromLocalConfig()
|
||||
updateMediaDataSource(localAdDataList)
|
||||
}
|
||||
}
|
||||
|
||||
fun unInit(tag: String) {
|
||||
@@ -85,6 +101,13 @@ object MediaDataSourceManager {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否是Sass环境
|
||||
*/
|
||||
private fun isSassProject(): Boolean {
|
||||
return DebugConfig.getProjectFlavor().lowercase().contains("saas")
|
||||
}
|
||||
|
||||
@SuppressLint("MissingPermission")
|
||||
private fun startGetMediaDataSourceLoop() {
|
||||
removeGetMediaDataSourceLoop()
|
||||
@@ -92,19 +115,22 @@ object MediaDataSourceManager {
|
||||
if (mRetryCount == RETRY_MAX_COUNT && !mHasEverGetMediaDataFromMis) {
|
||||
val localAdDataList = getMediaDataFromLocalConfig()
|
||||
updateMediaDataSource(localAdDataList)
|
||||
CallerLogger.e(TAG,
|
||||
CallerLogger.e(
|
||||
TAG,
|
||||
"startGetMediaDataSourceLoop:失败${mRetryCount}次,先使用本地数据播放"
|
||||
)
|
||||
}
|
||||
if (driverSn.isBlank()) {
|
||||
CallerLogger.e(TAG, "startGetMediaDataSourceLoop:司机屏sn为空,跳过本次查询"
|
||||
CallerLogger.e(
|
||||
TAG, "startGetMediaDataSourceLoop:司机屏sn为空,跳过本次查询"
|
||||
)
|
||||
mRetryCount++
|
||||
UiThreadHandler.postDelayed(getAdDataSourceLoopRunnable, 1000L)
|
||||
return
|
||||
}
|
||||
if (!NetworkUtils.isConnected()) {
|
||||
CallerLogger.e(TAG, "startGetMediaDataSourceLoop:当前无网络,跳过本次查询"
|
||||
CallerLogger.e(
|
||||
TAG, "startGetMediaDataSourceLoop:当前无网络,跳过本次查询"
|
||||
)
|
||||
mRetryCount++
|
||||
UiThreadHandler.postDelayed(getAdDataSourceLoopRunnable, 1000L)
|
||||
@@ -113,7 +139,8 @@ object MediaDataSourceManager {
|
||||
getMediaDataFromMis(object : OchCommonServiceCallback<MediaDataResp> {
|
||||
override fun onSuccess(data: MediaDataResp?) {
|
||||
mHasEverGetMediaDataFromMis = true
|
||||
CallerLogger.e(TAG,
|
||||
CallerLogger.e(
|
||||
TAG,
|
||||
"startGetMediaDataSourceLoop:success, 从管理后台获取到数据,MediaData=${
|
||||
GsonUtils.toJson(
|
||||
data
|
||||
@@ -125,21 +152,30 @@ object MediaDataSourceManager {
|
||||
if (newDataList.isNotEmpty()) {
|
||||
if (compareMediaDataSource(newDataList)) {
|
||||
updateMediaDataSource(newDataList)
|
||||
CallerLogger.e(TAG,
|
||||
CallerLogger.e(
|
||||
TAG,
|
||||
"startGetMediaDataSourceLoop:success, 从管理后台获取到数据,更新数据"
|
||||
)
|
||||
} else {
|
||||
CallerLogger.e(TAG,
|
||||
CallerLogger.e(
|
||||
TAG,
|
||||
"startGetMediaDataSourceLoop:success, 从管理后台获取到数据,数据无变化"
|
||||
)
|
||||
}
|
||||
} else {
|
||||
//请求成功获取到后台配置数据了,但是数据为空,此时为了有内容展示,还是使用本地数据更新播放
|
||||
if (mLastMediaDataSourceList.isEmpty()) {
|
||||
val localAdDataList = getMediaDataFromLocalConfig()
|
||||
updateMediaDataSource(localAdDataList)
|
||||
}
|
||||
}
|
||||
// 获取成功后,延迟5分钟再查询
|
||||
UiThreadHandler.postDelayed(getAdDataSourceLoopRunnable, 5 * 60 * 1000L)
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, msg: String?) {
|
||||
CallerLogger.e(TAG,
|
||||
CallerLogger.e(
|
||||
TAG,
|
||||
"startGetMediaDataSourceLoop:failed, code=$code, msg=$msg"
|
||||
)
|
||||
mRetryCount++
|
||||
@@ -149,7 +185,8 @@ object MediaDataSourceManager {
|
||||
|
||||
override fun onError() {
|
||||
super.onError()
|
||||
CallerLogger.e(TAG, "startGetMediaDataSourceLoop:error, 网络异常"
|
||||
CallerLogger.e(
|
||||
TAG, "startGetMediaDataSourceLoop:error, 网络异常"
|
||||
)
|
||||
mRetryCount++
|
||||
val delay = if (mHasEverGetMediaDataFromMis) 5000L else 1000L
|
||||
@@ -163,7 +200,8 @@ object MediaDataSourceManager {
|
||||
}
|
||||
|
||||
private fun getMediaDataFromMis(callback: OchCommonServiceCallback<MediaDataResp>) {
|
||||
CallerLogger.d(TAG, "getMediaDataFromMis:准备发送请求,driverSn=$driverSn"
|
||||
CallerLogger.d(
|
||||
TAG, "getMediaDataFromMis:准备发送请求,driverSn=$driverSn"
|
||||
)
|
||||
mNetworkService.queryMediaDataFromMis(
|
||||
sn = driverSn,
|
||||
|
||||
Reference in New Issue
Block a user