我想我应该说我是kotlin的新手,我只做过java/xml的项目,在这里我很困惑.

在Java中,我们 for each 屏幕提供了各自的逻辑/设计片段.这里我有一个活动,我把所有的应用程序逻辑都放在那里? 这是一个更大的项目,我认为这根本行不通.我很困惑如何开始这个项目并将其组织起来.所有的应用程序逻辑怎么能放在一个文件中,所有的屏幕都在里面?最重要的是,我不能执行来自可组合函数的其他逻辑,我必须 for each 可组合函数创建大量回调,以了解输入了什么并对其执行任何操作.

我只需要一些指导,提前谢谢!

推荐答案

你的问题涉及的范围相当广泛.

在项目 struct 方面,Compose不必与活动/片段方法有很大的不同.您可以将组合件视为片段(或某些情况下的活动).例如,你可能有LoginFragment之前,现在你将有一个名为LoginScreen的组合.

您可以使用相同的架构和设计模式,例如,您可以将MVVM与这两种方法一起使用,但实现略有不同.

你可以用同样的方式组织应用程序层,例如UI/domain/data,Compose只是一个替代的UI层.

对于自动锁定,它也没有什么不同,你需要观察正确的生命周期事件,例如onStop,然后有一些逻辑来锁定应用程序,例如,这可能会调用视图模型上的一个方法,将某些状态更改为"locked".

绝对不要试图将您的所有应用程序逻辑放在一个活动中.事实上,您可能不应该使用Compose在您的活动中加入任何逻辑.可以更多地将其视为您的组合应用程序的容器.

从活动的Angular 来看,许多写作应用可能就是这么简单的:

class MainActivity : ComponentActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        setContent {
            MyApp() // <-- A composable function
        }
    }
}

花一些时间看一下the getting started guide for Compose点可能是值得的,它有望为你澄清一些事情,为你指明正确的方向.

Android相关问答推荐

如何使禁用状态下的material 3按钮与启用状态下的 colored颜色 相同?

无法安装后重新编译android代码'

如何在Jetpack composeH中创建具有弯曲末端的六边形形状

strings.xml中字符串数组中的占位符

无法将非静态方法与Frida挂钩

用于小部件泄漏警告的伙伴对象中的Kotlin Lateinit

我想使用代码自动重命名我的Android存储中的文件夹

页面更改时不显示 cogo toast 消息

Jetpack Compose:如何将文本放置在行的右侧?

SDK 33 的问题 - 面向 S+(版本 31 及更高版本)要求在创建 PendingIntent 时指定 FLAG_IMMUTABLE 或 FLAG_MUTABLE 之一

是否可以在 Android 应用程序的 Wifi 设置中为 DNS 服务器设置自定义 IP?

在 Material 3 TopAppBar 代码的哪个位置定义了填充?

当手表与手机断开连接时,有没有办法在我的 Wear OS 应用程序中显示操作系统级别的图标?

我们也可以或应该对主要小部件使用预览 compose 功能吗?

Jetpack compose 为网络检索视频帧导致延迟

记住或不记得derivedStateOf

无法解析依赖项'com.github.smarteist:autoimageslider:1.4.0-appcompat'

插入查询室 OnConflictStrategy.REPLACE

复用 RecyclerView 适配器,避免不必要的 API 调用

Android全屏AlertDialog