setContent Block 是可组合的吗?

时间:2021-07-21 17:13:39

标签: android android-jetpack-compose

我正在自学 Android Jetpack Compose,并试图了解有关可组合函数调用的内容。

Official Android Doc 声明“只能从其他可组合函数的范围内调用可组合函数。

我有这段代码在 Greeting 块中调用 setContent Composable fxn。

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
//calling Greeting() inside the setContent() block
           Greeting("Me")
        }
    }
}

//Composable function
@Composable
fun Greeting(name: String) {

    Text(text = "Hello $name!", modifier = Modifier.padding(16.dp))

}

这是否会使 setContent 阻塞一个 Composable,因为我们在其中调用了一个 Composable 函数?

请让我有你的想法和意见,谢谢大家。

1 个答案:

答案 0 :(得分:1)

在您的 Activity 中,要创建基于 Compose 的屏幕,您必须调用 setContent() 方法,并传递您喜欢的任何可组合函数。

您可以查看源代码:

public fun ComponentActivity.setContent(
    parent: CompositionContext? = null,
    content: @Composable () -> Unit
)

其中 content 是一个声明 UI 内容的 @Composable 函数。