diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt index 8cd418c3d7..b62708c6ac 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt @@ -18,6 +18,9 @@ import com.mogo.eagle.core.utilcode.kotlin.PX import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.kotlin.lifecycleOwner import com.mogo.eagle.core.utilcode.kotlin.onClick +import com.mogo.eagle.core.utilcode.reminder.Reminder +import com.mogo.eagle.core.utilcode.reminder.api.IReminder +import com.mogo.eagle.core.utilcode.reminder.api.IReminder.IGlobalStateChangeListener import com.zhjt.mogo_core_function_devatools.badcase.repository.net.api.entity.BadCaseResponse.Reason import com.zhjt.mogo_core_function_devatools.badcase.biz.BadCasePresenter import com.zhjt.mogo_core_function_devatools.badcase.biz.BadCaseView @@ -55,6 +58,9 @@ internal object BadCaseManager : LifecycleEventObserver { @Volatile private var dismissJob: Job? = null + @Volatile + private var feedbackFloatShow = false + @OptIn(ExperimentalCoroutinesApi::class) private var channel: Channel = Channel(Channel.RENDEZVOUS) get() = if (field.isClosedForReceive || field.isClosedForSend) { @@ -89,6 +95,19 @@ internal object BadCaseManager : LifecycleEventObserver { @OptIn(ExperimentalCoroutinesApi::class) private fun register() { scope?.launch(Dispatchers.Default) { + Reminder.registerGlobalStateChangeListener(object : IGlobalStateChangeListener { + override fun onShow(reminder: IReminder) { + if (reminder.key().startsWith("FeedBackFloatWindow_")) { + feedbackFloatShow = true + } + } + + override fun onHide(reminder: IReminder) { + if (reminder.key().startsWith("FeedBackFloatWindow_")) { + feedbackFloatShow = false + } + } + }) while (true) { CallerLogger.d("$M_DEVA$TAG", "---- 开始监听BadCase事件 ----") val old = record @@ -172,6 +191,9 @@ internal object BadCaseManager : LifecycleEventObserver { } fun onReceiveBadCaseRecord(record: RecordPanelOuterClass.RecordPanel) { + if (feedbackFloatShow) { + return + } scope?.launch { val newRecord = record.toRecord() withContext(Dispatchers.IO) { diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ext/BadCaseExt.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ext/BadCaseExt.kt index 55d9da26a5..113108fb86 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ext/BadCaseExt.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ext/BadCaseExt.kt @@ -118,6 +118,11 @@ internal fun Context.pop(content: View, width: Int, height: Int, fitSystemWindow } pop.contentView = content val reminder = object : PopupWindowReminder(pop) { + + override fun key(): String { + return "FeedBackFloatWindow_" + super.key() + } + override fun show() { pop.showAtLocation(activity.window.decorView, Gravity.START, 0, if (fitSystemWindow) WindowUtils.getStatusBarHeight(activity) else 0) } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/feedback/FeedbackManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/feedback/FeedbackManager.kt index 11561e43b0..a003fb0338 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/feedback/FeedbackManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/feedback/FeedbackManager.kt @@ -2,7 +2,6 @@ package com.zhjt.mogo_core_function_devatools.feedback import android.content.Context import android.text.TextUtils -import android.util.Log import android.view.View import android.view.WindowManager import android.widget.TextView @@ -14,13 +13,11 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListen import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager import com.mogo.eagle.core.utilcode.kotlin.* import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA import com.mogo.eagle.core.utilcode.mogo.toast.TipToast import com.mogo.eagle.core.utilcode.util.KeyboardUtils import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.zhjt.mogo_core_function_devatools.R -import com.zhjt.mogo_core_function_devatools.badcase.BadCaseManager import com.zhjt.mogo_core_function_devatools.badcase.repository.db.entity.AutoPilotRecord import com.zhjt.mogo_core_function_devatools.badcase.repository.net.api.entity.BadCaseResponse.Reason import com.zhjt.mogo_core_function_devatools.badcase.toRecord @@ -32,7 +29,10 @@ import com.zhjt.mogo_core_function_devatools.feedback.biz.impl.FeedbackPresenter import com.zhjt.mogo_core_function_devatools.feedback.callback.IFeedbackCallback import kotlinx.coroutines.* import record_cache.RecordPanelOuterClass +import java.io.File import java.lang.IllegalStateException +import java.text.SimpleDateFormat +import java.util.* import kotlin.Result.Companion internal object FeedbackManager { @@ -161,8 +161,10 @@ internal object FeedbackManager { } private fun startRecordLog(record: AutoPilotRecord) { + val prefix = record.fileName?.split(File.separator)?.last() ?: "BadCase_${SimpleDateFormat("yyyy_MM_dd-HH_mm_ss", Locale.getDefault()).format(Date())}" CallerLogger.d("${M_DEVA}${TAG}", "录制Bag开始, 触发录制全量日志 ...") - CallerDevaToolsManager.startCatchLog(1,record.fileName) + CallerLogger.d("${M_DEVA}${TAG}", "全量日志前缀: $prefix") + CallerDevaToolsManager.startCatchLog(1, prefix) } private fun stopRecordLog(newRecord: AutoPilotRecord) {