Jetpack Compose 在 Activity 和可组合项之间共享视图模型

问题描述 投票:0回答:1

我已经按照本教程了解了有关

ViewModel
Jetpack Compose
的基本知识: https://developer.android.com/codelabs/basic-android-kotlin-compose-viewmodel-and-state#0

在上面的教程中,第 6 节中显示了下一个

Composable
函数,它似乎在本地初始化
ViewModel

@Composable
fun GameScreen(
   gameViewModel: GameViewModel = viewModel()
) {
   // ...
}

上述方法对于教程示例来说是可以的,因为所有应用程序逻辑都位于

ViewModel
中。问题是,我的应用程序还需要从我的
ViewModel
访问
MainActivity
(调用一些方法),因为我的应用程序需要从
MainActivity
范围在后台创建和绑定自定义进程,并且
ViewModel
需要根据服务状态(启动、停止、事件...)进行更新,以便更新 UI。

MainActivity
创建并绑定服务是否正确?在
ViewModel
MainActivity
函数之间共享
Composable
是否正确?哪种方法是正确的?在
ViewModel
中初始化
MainActivity
然后传递给所有
Composable
函数?

谢谢!

android-studio android-activity android-jetpack-compose android-viewmodel
1个回答
0
投票

共享视图模型是很常见的,以及管理共享状态的正确方法

class MainActivity : AppCompatActivity() {
    private val gameViewModel: GameViewModel by viewModels()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            MyApp(gameViewModel)
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.