Replace java.util.Random with kotlin Random object (#4364)

This also improves randomness by avoiding to reinitialize the random
number generator repeatedly from a seed based on the current time.
Typically, if the number generator is reinitialized repeatedly at
non-random times (like multiple times in a row), then generated numbers
have a higher chance of repeating.

The Kotlin Random object is only initialized once, using the best seed
available for the current Android version.
This commit is contained in:
Christophe Beyls 2024-04-10 21:47:27 +02:00 committed by GitHub
parent 2a4d60bed8
commit ec599c8f8a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 4 additions and 6 deletions

View File

@ -21,7 +21,7 @@ import com.keylesspalace.tusky.util.getFormattedDescription
import com.keylesspalace.tusky.util.hide import com.keylesspalace.tusky.util.hide
import com.keylesspalace.tusky.util.show import com.keylesspalace.tusky.util.show
import com.keylesspalace.tusky.viewdata.AttachmentViewData import com.keylesspalace.tusky.viewdata.AttachmentViewData
import java.util.Random import kotlin.random.Random
class AccountMediaGridAdapter( class AccountMediaGridAdapter(
private val useBlurhash: Boolean, private val useBlurhash: Boolean,
@ -60,7 +60,6 @@ class AccountMediaGridAdapter(
) )
private val itemBgBaseHSV = FloatArray(3) private val itemBgBaseHSV = FloatArray(3)
private val random = Random()
override fun onCreateViewHolder( override fun onCreateViewHolder(
parent: ViewGroup, parent: ViewGroup,
@ -72,7 +71,7 @@ class AccountMediaGridAdapter(
false false
) )
Color.colorToHSV(baseItemBackgroundColor, itemBgBaseHSV) Color.colorToHSV(baseItemBackgroundColor, itemBgBaseHSV)
itemBgBaseHSV[2] = itemBgBaseHSV[2] + random.nextFloat() / 3f - 1f / 6f itemBgBaseHSV[2] = itemBgBaseHSV[2] + Random.nextFloat() / 3f - 1f / 6f
binding.root.setBackgroundColor(Color.HSVToColor(itemBgBaseHSV)) binding.root.setBackgroundColor(Color.HSVToColor(itemBgBaseHSV))
return BindingHolder(binding) return BindingHolder(binding)
} }

View File

@ -3,15 +3,14 @@
package com.keylesspalace.tusky.util package com.keylesspalace.tusky.util
import android.text.Spanned import android.text.Spanned
import java.util.Random import kotlin.random.Random
private const val POSSIBLE_CHARS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" private const val POSSIBLE_CHARS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
fun randomAlphanumericString(count: Int): String { fun randomAlphanumericString(count: Int): String {
val chars = CharArray(count) val chars = CharArray(count)
val random = Random()
for (i in 0 until count) { for (i in 0 until count) {
chars[i] = POSSIBLE_CHARS[random.nextInt(POSSIBLE_CHARS.length)] chars[i] = POSSIBLE_CHARS[Random.nextInt(POSSIBLE_CHARS.length)]
} }
return String(chars) return String(chars)
} }