I run Code A and get Result A.
You will find the var temp
is always 1 when the system invoke Log.e("my", "Load $temp ${refresh.value}")
even if I have clicked the Button again and again.
You know the var temp
is wrapped with remember
, and I have assigned 2 to it in onClick
event of Button.
What's wrong with my code?
BTW, if you run Code B and it will get Result B just like I expected!
Code A
var temp = remember { 1 }
val refresh = remember { mutableStateOf(100) }
Log.e("my", "Load $temp ${refresh.value}")
Button(
onClick = {
temp++
refresh.value++
Log.e("my", "Save $temp ${refresh.value}")
}
) {
Text("OK $temp ${refresh.value}")
}
Result A
2022-08-29 11:05:36.825 29337-29337/info.dodata.soundmeter E/my: Load 1 100
2022-08-29 11:05:37.550 29337-29337/info.dodata.soundmeter E/my: Load 1 100
2022-08-29 11:05:39.596 29337-29337/info.dodata.soundmeter E/my: Save 2 101
2022-08-29 11:05:39.600 29337-29337/info.dodata.soundmeter E/my: Load 1 101
2022-08-29 11:05:43.274 29337-29337/info.dodata.soundmeter E/my: Save 2 102
2022-08-29 11:05:43.278 29337-29337/info.dodata.soundmeter E/my: Load 1 102
2022-08-29 11:05:52.068 29337-29337/info.dodata.soundmeter E/my: Save 2 103
2022-08-29 11:05:52.071 29337-29337/info.dodata.soundmeter E/my: Load 1 103
2022-08-29 11:05:58.509 29337-29337/info.dodata.soundmeter E/my: Save 2 104
2022-08-29 11:05:58.511 29337-29337/info.dodata.soundmeter E/my: Load 1 104
Code B
var temp = remember { 1 }
val refresh = remember { mutableStateOf(100) }
//Log.e("my", "Load $temp ${refresh.value}") //I remove it
Button(
onClick = {
temp++
refresh.value++
Log.e("my", "Save $temp ${refresh.value}")
}
) {
Text("OK $temp ${refresh.value}")
}
Result B
2022-08-29 11:13:30.624 31545-31545/info.dodata.soundmeter E/my: Save 2 101
2022-08-29 11:13:31.750 31545-31545/info.dodata.soundmeter E/my: Save 3 102
2022-08-29 11:13:33.003 31545-31545/info.dodata.soundmeter E/my: Save 4 103
2022-08-29 11:13:38.993 31545-31545/info.dodata.soundmeter E/my: Save 5 104
2022-08-29 11:13:40.158 31545-31545/info.dodata.soundmeter E/my: Save 6 105