运行代码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")
...
}
1条答案
按热度按时间wpx232ag1#
remember
是位置。每次对rememberOtherState
的调用都会返回OtherState
的不同示例,但每次TitleWithToolBar
被重组时都会返回相同的示例。有关位置记忆的更多详细信息,请考虑阅读:https://newsletter.jorgecastillo.dev/p/positional-memoization-in-jetpack