kotlin 为什么我在Android Jetpack Compose中使用remember时无法获得相同的class示例?

b5buobof  于 2023-06-30  发布在  Kotlin
关注(0)|答案(1)|浏览(216)

运行代码A后,我发现s1.hashCode()s2.hashCode()在UI重组后返回不同的值。
我已经为函数rememberOtherState()添加了remember关键字,为什么当我在Android Jetpack Compose中使用remember时,无法获得相同的类示例?

class OtherState (context: Context) {
    ...
}

@Composable
fun rememberOtherState(): OtherState {
    val context = LocalContext.current
    return remember {
        OtherState(context)
    }
}

@Composable
fun TitleWithToolBar(   
) {
    val s1=rememberOtherState()
    val s2=rememberOtherState()
    
    Row(
        modifier = Modifier            
    ) {

        log(s1.hashCode().toString()+" S1")
        log(s2.hashCode().toString()+" S2")

    ...
}
wpx232ag

wpx232ag1#

remember是位置。每次对rememberOtherState的调用都会返回OtherState的不同示例,但每次TitleWithToolBar被重组时都会返回相同的示例。
有关位置记忆的更多详细信息,请考虑阅读:https://newsletter.jorgecastillo.dev/p/positional-memoization-in-jetpack

相关问题