diff --git a/app/src/main/java/org/fcitx/fcitx5/android/FcitxRemoteService.kt b/app/src/main/java/org/fcitx/fcitx5/android/FcitxRemoteService.kt index 282a31f6..9e292e04 100644 --- a/app/src/main/java/org/fcitx/fcitx5/android/FcitxRemoteService.kt +++ b/app/src/main/java/org/fcitx/fcitx5/android/FcitxRemoteService.kt @@ -1,6 +1,6 @@ /* * SPDX-License-Identifier: LGPL-2.1-or-later - * SPDX-FileCopyrightText: Copyright 2021-2023 Fcitx5 for Android Contributors + * SPDX-FileCopyrightText: Copyright 2021-2026 Fcitx5 for Android Contributors */ package org.fcitx.fcitx5.android @@ -27,7 +27,7 @@ import org.fcitx.fcitx5.android.utils.Const import org.fcitx.fcitx5.android.utils.desc import org.fcitx.fcitx5.android.utils.descEquals import timber.log.Timber -import java.util.PriorityQueue +import java.util.concurrent.CopyOnWriteArrayList class FcitxRemoteService : Service() { @@ -35,8 +35,7 @@ class FcitxRemoteService : Service() { private val scope = MainScope() + CoroutineName("FcitxRemoteService") - private val clipboardTransformers = - PriorityQueue(3, compareByDescending { it.priority }) + private val clipboardTransformers = CopyOnWriteArrayList() private fun transformClipboard(source: String): String { var result = source @@ -75,6 +74,7 @@ class FcitxRemoteService : Service() { Timber.d("registerClipboardEntryTransformer: ${transformer.desc}") if (transformer.description.isNullOrBlank()) { Timber.w("Cannot register ClipboardEntryTransformer of null or empty description") + return } if (clipboardTransformers.any { it.descEquals(transformer) }) { Timber.w("ClipboardEntryTransformer ${transformer.desc} has already been registered") @@ -85,6 +85,7 @@ class FcitxRemoteService : Service() { unregisterClipboardEntryTransformer(transformer) }, 0) clipboardTransformers.add(transformer) + clipboardTransformers.sortByDescending { it.priority } updateClipboardManager() } }