我想我应该说我对 kotlin 和 compose 很陌生,我只用过 java/xml 的项目,我在这里很困惑。
使用java,我们为每个屏幕提供具有自己的逻辑/设计的片段。这里我有一个活动,我把所有的应用程序逻辑放在那里? 这是一个更大的项目,但我认为它根本不起作用。我很困惑如何启动该项目并构建它。如何将所有应用程序逻辑及其所有屏幕放入一个文件中?最重要的是,我无法从可组合函数执行其他逻辑,我必须为每个可组合函数创建大量回调,以了解输入的内容并对其执行任何操作。
我只需要一些指导,提前致谢!
你的问题范围相当广泛。
就项目结构而言,Compose 不必与活动/片段方法有很大不同。您可以考虑将可组合项与片段(或某些情况下的活动)进行比较。例如,您之前可能有
LoginFragment
,现在您将有一个名为 LoginScreen
的可组合项。
您可以使用相同的架构和设计模式,例如这两种方法都可以使用 MVVM,但实现方式略有不同。
您可以以相同的方式组织应用程序层,例如UI/域/数据,Compose 只是一个替代的 UI 层。
对于自动锁定,这也没有什么不同,您需要观察正确的生命周期事件,例如
onStop
,然后有一些逻辑来锁定应用程序,例如这可能会调用视图模型上的方法,将某些状态更改为“锁定”。
绝对不要尝试将所有应用程序逻辑放在一个活动中。事实上,您可能不应该使用 Compose 将任何逻辑放入您的活动中。更多地将其视为您的 Compose 应用程序的容器。
从活动角度来看,许多 Compose 应用程序可能就像这样简单:
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
setContent {
MyApp() // <-- A composable function
}
}
}
可能值得花一些时间查看 Compose 入门指南,它应该可以帮助您理清思路并为您指明正确的方向。