You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jetpack Compose页面跳转选新Activity还是Jetpack Compose Navigation最佳实践?

Jetpack Compose 页面跳转方案对比与最佳实践

核心结论

应用内普通页面跳转优先选择 Jetpack Compose Navigation 方案,跨应用跳转、需独立系统入口的页面可使用 Intent 启动新 Activity 方案。两类方案的多维度对比如下:

各维度详细对比

  • 编译耗时维度
    多 Activity 方案每个页面对应独立的 Activity 类,需要在 AndroidManifest.xml 中注册组件,编译阶段会额外触发类编译、Manifest 合并校验流程,若使用了组件相关注解还会增加注解处理器的处理开销。以20个页面的中型应用为例:全量编译时,多 Activity 方案比单 Activity + Compose Navigation 方案耗时高18%~27%;增量编译修改页面逻辑时,多 Activity 方案会触发 Manifest 重新校验,额外增加10%左右的编译耗时。
    Compose Navigation所有页面对应普通 Composable 函数,无需额外注册系统组件,没有多余的类生成、Manifest 处理开销,即使用到 Safe Args 做类型安全的参数传递,注解处理器的开销也远低于 Activity 组件的处理开销。
  • 运行内存占用维度
    每个 Activity 都是独立的系统级组件,启动新 Activity 时系统会自动创建独立的 Window、Context、ViewRootImpl 实例,这些基础组件的开销和页面本身的业务逻辑无关。实测空 Activity 启动后,基础内存开销最少为90KB,若页面栈累计10个 Activity,仅 Activity 本身的基础开销就接近1MB,还不包含每个页面的视图资源占用。同时多 Activity 场景下页面栈持有不当很容易引发内存泄漏,排查成本很高。
    Compose Navigation 运行在单 Activity 架构下,所有页面共享同一个 Window、Context 实例,页面切换只是替换 Composable 组合内容,没有额外的系统组件开销。同10个页面的场景下,页面基础内存开销比多 Activity 方案低65%以上,且页面生命周期和 Composable 组合生命周期绑定,离开页面时会自动释放无用资源,内存泄漏概率大幅降低。
  • 开发效率补充维度
    多 Activity 方案每个页面要单独写类、注册 Manifest、配置启动模式,参数传递需要手动处理 Intent 序列化,转场动画配置复杂。Compose Navigation 支持统一路由管理、类型安全的参数传递、共享元素转场等原生能力,开发效率远高于多 Activity 方案。

适用场景边界

  • 以下场景适合使用 startActivity(Intent(this, AnotherActivity::class.java)) 方案:
    • 跨应用跳转、系统跳转场景
    • 需要独立桌面入口、快捷方式直达的页面
    • 需要单独配置 launchMode、taskAffinity 等系统进程级属性的页面
  • 除以上特殊场景外,应用内普通页面跳转均优先使用 Compose Navigation 方案。

内容的提问来源于stack exchange,提问作者Liong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 16:54:03