在Android Studio中学习,碰到了令人疑惑的地方,请路过大神指点! (1)第一段代码
@Composable
fun Test() {
Log.d("调试","开始执行..")
var count by remember{ mutableStateOf(0) }
Column {
val list = mutableListOf("A","B","C","D")
Log.d("调试","a,count="+count.toString())
for (num in list){
Text(text ="当前字母:$num")
Log.d("调试","b,count="+count.toString())
count++
Log.d("调试","c,count="+count.toString())
Log.d("调试","d,count="+count.toString())
}
Log.d("调试","e,count="+count.toString())
Text(text = "一共 $count 个字母")
count++
Log.d("调试","f,count="+count.toString())
}
}
运行界面以及调试结果如下:
从运行结果看,代码块Test()不会自动重组。
(2)第二段代码
fun Test1() {
Log.d("调试","开始执行..")
var count by remember{ mutableStateOf(0) }
//代码之前加一个图片
Column(modifier = Modifier.padding(150.dp,0.dp,0.dp,0.dp)) {
Image(painter = painterResource(id = R.drawable.tv_fuya), contentScale= ContentScale.FillHeight, alignment = Alignment.Center , contentDescription =null,modifier = Modifier
)
}
//原始代码
Column {
val list = mutableListOf("A","B","C","D")
Log.d("调试","a,count="+count.toString())
for (num in list){
Text(text ="当前字母:$num")
Log.d("调试","b,count="+count.toString())
count++
Log.d("调试","c,count="+count.toString())
Log.d("调试","d,count="+count.toString())
}
Log.d("调试","e,count="+count.toString())
Text(text = "一共 $count 个字母")
count++
Log.d("调试","f,count="+count.toString())
}
}
运行界面以及调试结果如下:
在第一代码之前加一个图片,代码块Test1()就自动重组了!
(3)第三段代码
@Composable
fun Test2() {
Log.d("调试","开始执行..")
var count by remember{ mutableStateOf(0) }
//原始代码
Column {
val list = mutableListOf("A","B","C","D")
Log.d("调试","a,count="+count.toString())
for (num in list){
Text(text ="当前字母:$num")
Log.d("调试","b,count="+count.toString())
count++
Log.d("调试","c,count="+count.toString())
Log.d("调试","d,count="+count.toString())
}
Log.d("调试","e,count="+count.toString())
Text(text = "一共 $count 个字母")
count++
Log.d("调试","f,count="+count.toString())
}
//代码之后加一个图片
Column(modifier = Modifier.padding(150.dp,0.dp,0.dp,0.dp)) {
Image(painter = painterResource(id = R.drawable.tv_fuya), contentScale= ContentScale.FillHeight, alignment = Alignment.Center , contentDescription =null,modifier = Modifier
)
}
}
运行界面以及调试结果如下:
在第一代码之后加一个图片,代码块Test2()就不会自动重组了?这是什么原因呢?