[V2X]优化V2X弹窗在子线程调用的逻辑
This commit is contained in:
@@ -100,17 +100,23 @@ object Reminder {
|
||||
if (key.isEmpty()) {
|
||||
throw IllegalStateException("reminder: ${reminder.javaClass.name}'s key can't be empty.")
|
||||
}
|
||||
if (enqueued.contains(key)) {
|
||||
return
|
||||
synchronized(enqueued) {
|
||||
if (enqueued.contains(key)) {
|
||||
return
|
||||
}
|
||||
enqueued += key
|
||||
}
|
||||
enqueued += key
|
||||
attaches.getOrPut(attachTo) {
|
||||
mutableListOf()
|
||||
}.also {
|
||||
it.add(WeakReference(reminder))
|
||||
synchronized(attaches) {
|
||||
attaches.getOrPut(attachTo) {
|
||||
mutableListOf()
|
||||
}.also {
|
||||
it.add(WeakReference(reminder))
|
||||
}
|
||||
}
|
||||
listener?.let {
|
||||
reminderListeners[reminder] = it
|
||||
synchronized(reminderListeners) {
|
||||
listener?.let {
|
||||
reminderListeners[reminder] = it
|
||||
}
|
||||
}
|
||||
scope.launch {
|
||||
if (reminder is ActivityReminder) {
|
||||
@@ -131,11 +137,14 @@ object Reminder {
|
||||
heap += reminder
|
||||
dequeueHeap()
|
||||
} else {
|
||||
queue += reminder
|
||||
val pre = findPreShowedReminder()
|
||||
if (pre != null) {
|
||||
pre.hide()
|
||||
queue.clear()
|
||||
queue += reminder
|
||||
} else {
|
||||
queue.clear()
|
||||
queue += reminder
|
||||
dequeue()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ import android.widget.PopupWindow
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import com.mogo.eagle.core.utilcode.reminder.api.IReminder
|
||||
|
||||
abstract class PopupWindowReminder(val popupWindow: PopupWindow): IReminder {
|
||||
abstract class PopupWindowReminder(open val popupWindow: PopupWindow): IReminder {
|
||||
|
||||
override fun lifecycleOwner(): LifecycleOwner = popupWindow.lifecycleOwner
|
||||
|
||||
|
||||
Reference in New Issue
Block a user