Merge remote-tracking branch 'origin/dev_robotaxi-d-app-module_251_220125_2.5.1' into dev_robotaxi-d-app-module_251_220125_2.5.1

This commit is contained in:
donghongyu
2022-01-27 11:26:35 +08:00
20 changed files with 301 additions and 61 deletions

View File

@@ -177,14 +177,37 @@ private suspend fun getCache(): BadCaseEntity? = suspendCancellableCoroutine {
private fun getBuildIn(): BadCaseEntity = BadCaseEntity().also { itx ->
val data = mutableListOf<Reason>()
data += Reason().also {
it.id = "1"
it.reason = "变道有干扰"
}
data += Reason().also {
it.id = "2"
it.reason = "遇红绿灯未停车"
}
data += Reason().also {
it.id = "3"
it.reason = "遇障碍物未停车"
}
data += Reason().also {
it.id = "4"
it.reason = "无法绕行"
}
data += Reason().also {
it.id = "5"
it.reason = "画龙"
}
data += Reason().also {
it.id = "6"
it.reason = "转弯过于靠近路侧"
}
data += Reason().also {
it.id = "7"
it.reason = "无故退出自动驾驶"
}
data += Reason().also {
it.id = "8"
it.reason = "其它"
}
itx.data = data
itx.isBuildIn = true
}

View File

@@ -12,6 +12,7 @@ import com.mogo.eagle.core.utilcode.reminder.api.impl.ActivityReminder
import kotlinx.coroutines.*
import kotlinx.coroutines.android.asCoroutineDispatcher
import java.lang.IllegalStateException
import java.lang.ref.WeakReference
import java.util.*
import java.util.concurrent.ConcurrentHashMap
import java.util.concurrent.CopyOnWriteArrayList
@@ -44,7 +45,7 @@ object Reminder {
}
private val attaches by lazy {
ConcurrentHashMap<LifecycleOwner, MutableList<IReminder>>()
ConcurrentHashMap<LifecycleOwner, MutableList<WeakReference<IReminder>>>()
}
private val scope by lazy {
@@ -106,7 +107,7 @@ object Reminder {
attaches.getOrPut(attachTo, {
mutableListOf()
}).also {
it.add(reminder)
it.add(WeakReference(reminder))
}
listener?.let {
reminderListeners[reminder] = it
@@ -144,15 +145,18 @@ object Reminder {
val reminders = attaches.remove(attachTo) ?: return
try {
reminders.forEach {
if (it.isShowing()) {
it.hide()
}
enqueued.remove(it.key())
showed.remove(it.key())
if (it.isOverride()) {
queue.remove(it)
} else {
heap.remove(it)
val reminder = it.get()
if (reminder != null) {
if (reminder.isShowing()) {
reminder.hide()
}
enqueued.remove(reminder.key())
showed.remove(reminder.key())
if (reminder.isOverride()) {
queue.remove(reminder)
} else {
heap.remove(reminder)
}
}
}
} catch (t: Throwable) {
@@ -303,7 +307,10 @@ object Reminder {
if (reminders == null || reminders.isEmpty()) {
return false
}
return reminders.find { it.isShowing() } != null
return reminders.find {
val ref = it.get()
return@find ref != null && ref.isShowing()
} != null
}
fun dismissAll(attachTo: LifecycleOwner) {
@@ -313,13 +320,16 @@ object Reminder {
}
try {
reminders.forEach {
if (it.isOverride()) {
queue.remove(it)
} else {
heap.remove(it)
}
if (it.isShowing()) {
it.hide()
val reminder = it.get()
if (reminder != null) {
if (reminder.isShowing()) {
reminder.hide()
}
if (reminder.isOverride()) {
queue.remove(reminder)
} else {
heap.remove(reminder)
}
}
}
} catch (t: Throwable) {

View File

@@ -123,6 +123,7 @@ interface IReminder : Comparable<IReminder> {
override fun onViewDetachedFromWindow(v: View?) {
lifecycle.let {
if (it.currentState.isAtLeast(Lifecycle.State.CREATED)) {
this@lifecycleOwner.removeOnAttachStateChangeListener(this)
it.currentState = Lifecycle.State.DESTROYED
}
}