Reuse collator instance

This commit is contained in:
MM20
2024-05-11 13:18:03 +02:00
parent 9b252cb5e8
commit 90de026e49
3 changed files with 21 additions and 6 deletions
@@ -6,7 +6,7 @@ import android.os.Bundle
import de.mm20.launcher2.icons.LauncherIcon
import de.mm20.launcher2.icons.StaticLauncherIcon
import de.mm20.launcher2.ktx.romanize
import java.text.Collator
import de.mm20.launcher2.text.Collator
interface SavableSearchable : Searchable, Comparable<SavableSearchable> {
val key: String
@@ -37,8 +37,7 @@ interface SavableSearchable : Searchable, Comparable<SavableSearchable> {
override fun compareTo(other: SavableSearchable): Int {
val label1 = labelOverride ?: label
val label2 = other.labelOverride ?: other.label
return Collator.getInstance().apply { strength = Collator.SECONDARY }
.compare(label1.romanize(), label2.romanize())
return Collator.compare(label1.romanize(), label2.romanize())
}
val domain: String
@@ -0,0 +1,17 @@
package de.mm20.launcher2.text
import android.icu.text.Collator
import kotlin.concurrent.getOrSet
private val threadLocalCollator = ThreadLocal.withInitial {
android.icu.text.Collator.getInstance().apply {
strength = android.icu.text.Collator.SECONDARY
}
}
val Collator = threadLocalCollator.getOrSet {
android.icu.text.Collator.getInstance().apply {
strength = android.icu.text.Collator.SECONDARY
}
}