[V2X]优化V2X弹窗在子线程调用的逻辑

This commit is contained in:
renwj
2022-08-03 19:47:55 +08:00
parent 7a59119888
commit e7f57c1cfc
5 changed files with 86 additions and 35 deletions

View File

@@ -146,6 +146,8 @@ import java.util.*
private var speakJob: Job? = null
private var showV2XJob: Job? = null
private var showingV2XTip: IReminder? = null
private var roadVideoDialog: RoadVideoDialog? = null
@@ -606,11 +608,9 @@ import java.util.*
CallerLogger.e("$M_HMI$TAG", "Show warningContent is null or empty!")
return
}
speakJob?.safeCancel()
val content = mViewNotificationProvider?.getNotificationView() ?: return
content.setWarningIcon(EventTypeEnum.getWarningIcon(v2xType))
content.setWarningContent(warningContent)
var reminder: IReminder? = null
Log.d("$M_HMI$TAG", "--- show v2x dialog 1 ---: info -> v2x-type: $v2xType : expireTime: $expireTime")
Reminder.enqueue(this@MoGoHmiFragment, object : PopupWindowReminder(PopupWindow(content, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT).also { itx ->
itx.isTouchable = false
@@ -633,43 +633,44 @@ import java.util.*
}
}) {
override fun show() {
showV2XJob?.safeCancel()
speakJob?.safeCancel()
val parent = it.window.decorView
parent.doOnAttach {
Log.d("$M_HMI$TAG", "--- show v2x dialog 2 ---: info -> v2x-type: $v2xType : expireTime: $expireTime")
popupWindow.showAtLocation(parent, content.layoutGravity, 0, 0)
}
}
override fun isOverride(): Boolean {
return true
}
}.also { itx -> reminder = itx }, object : IStateChangeListener {
}, object : IStateChangeListener {
override fun onShow(reminder: IReminder) {
listener?.onShow()
showingV2XTip = reminder
lifecycleScope.launch {
delay(expireTime)
}.also { itx ->
showV2XJob = itx
}.invokeOnCompletion { _ ->
reminder.hide()
}
if (ttsContent != null && !TextUtils.isEmpty(ttsContent) && playTTS) {
lifecycleScope.launch {
speak(it, ttsContent)
}.also {
speakJob = it
}.also { itx ->
speakJob = itx
}
}
}
override fun onHide(reminder: IReminder) {
listener?.onDismiss()
showingV2XTip = null
showWarning(WarningDirectionEnum.ALERT_WARNING_NON)
}
})
if (reminder == null) {
return
}
showingV2XTip = reminder
lifecycleScope.launch {
delay(expireTime)
reminder?.hide()
}
}
}