[feedback]修正主动反馈页面展示时触发结束录制,导致底部badcase入口展示

This commit is contained in:
renwj
2022-03-24 15:11:33 +08:00
parent 2aff9cab16
commit ea68c4e28d
3 changed files with 33 additions and 4 deletions

View File

@@ -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<AutoPilotRecord> = 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) {

View File

@@ -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)
}

View File

@@ -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) {