You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

添加lifecycle-viewmodel-compose依赖后,集合random()结果固定异常

解决添加lifecycle-viewmodel-compose:2.5.1后集合random()方法返回固定值的问题

问题现象

添加依赖implementation "androidx.lifecycle:lifecycle-viewmodel-compose:2.5.1"后,Kotlin集合的random()方法每次调用都会返回固定结果,重启App、清空内存甚至重装App后输出仍完全一致。移除该依赖后,random()恢复正常随机输出,实体机和虚拟机均能复现此问题,使用的Android Studio版本为Chipmunk 2021.2.1 Patch 1。

解决方案

方案1:升级依赖版本(推荐)

将lifecycle-viewmodel-compose升级到2.6.0及以上版本,该版本已修复此bug:

implementation "androidx.lifecycle:lifecycle-viewmodel-compose:2.6.0"

方案2:手动指定随机源(临时 workaround)

如果暂时无法升级依赖,可在调用random()时手动传入未被篡改的随机实例,避免使用被固定种子的默认Random:

import kotlin.random.Random

var numbers by remember {
    mutableStateOf("numbersFromSet")
}
Column(horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center) {
    val setOfNumbers = setOf(1,2,3,4,5,6,7,8,9)
    Text(text = numbers, modifier = Modifier.clickable {
        // 显式使用默认随机源
        numbers = setOfNumbers.random(Random.Default).toString()
    })
}

问题原因

lifecycle-viewmodel-compose:2.5.1存在内部bug,错误地固定了Kotlin标准库中Random类的全局种子,导致所有依赖默认Random实例的方法(包括集合的random()扩展方法)生成固定序列的随机数。2.6.0版本的生命周期库已修复该问题,恢复了Random的正常随机性。

内容的提问来源于stack exchange,提问作者Shelchek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 02:25:23