我最近用Jetpack Compose启动了我的第一个项目(只有很少的Android开发经验)。为了检查性能,我记录了对任何函数/可组合函数的每次调用,以及在启动或方向改变时的一些意外行为(但没有进一步与应用交互):
我理解调用oncreate / super(同样,在方向改变的情况下),但是为什么setContent {}被调用两次呢?
override fun onCreate(savedInstanceState: Bundle?) {
Log.v(tag, "oncreate")
super.onCreate(savedInstanceState)
Log.v(tag, "oncreatesuper")
setContent {
Log.v(tag, "setting content")
Content()
}
}
然后
@Composable
private fun Content() {
val arrayOfNodes = rememberSaveable { mutableListOf<Wurzel>() }
val toggleSizeInputDialog = rememberSaveable { mutableStateOf(false) }
(...some more...)
val currentConfig = LocalConfiguration.current
val title = stringResource(id = R.string.title)
Log.v(tag, "recomposing content")
MyTheme {
when (currentConfig.orientation) {
Configuration.ORIENTATION_LANDSCAPE -> {
Scaffold(...........)
我的项目太小了,看不到任何性能问题,但是我想找出这种行为的原因,以供将来参考,或者我是否严重误解了组合架构。
1条答案
按热度按时间guz6ccqo1#
setComponent()
没有被调用两次,但是传入的可组合函数被调用了两次,看起来像是某个事件导致了content
可组合函数的重新组合。