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

Android开发:Activity与Fragment的最佳实践及适用场景

Activity vs Fragment: 最佳实践与适用场景

核心差异先搞懂

  • Activity是Android的核心页面组件,对应一个完整的独立屏幕,拥有自己完整的生命周期,直接和系统打交道(比如处理返回键、权限请求、系统配置变更)。
  • Fragment是可复用的UI模块,必须依附于Activity存在,生命周期受宿主Activity影响,本质是Activity的一部分,能在同一个Activity内切换,实现单屏幕内的多视图逻辑。

各自适用场景

优先选Activity的情况

  • 独立页面入口:比如启动页、登录页、设置页这类用户进入后完成单一任务就离开的完整屏幕,用Activity更直接。
  • 需要独立系统交互:比如要处理全屏模式、特殊横竖屏配置,或者单独申请权限、接收系统广播的页面,Activity的独立性更合适。
  • 简单页面逻辑:如果页面功能单一,不需要在同一个屏幕内切换不同视图,没必要引入Fragment增加复杂度。

优先选Fragment的情况

  • 多视图切换的复杂页面:比如电商商品详情页切换评论/参数/推荐模块、新闻首页切换不同栏目,用Fragment拆分模块,便于维护和单独迭代。
  • 大屏适配:平板上常见的双 pane 布局(左侧列表+右侧详情),用Fragment可以一套逻辑适配手机(两个Activity跳转)和平板(同一Activity内双Fragment)。
  • UI组件复用:比如收藏列表、历史记录这类需要在多个页面出现的模块,做成Fragment后可以直接嵌入不同Activity,避免重复编码。
  • 配合官方导航组件:现在Android官方推荐的Navigation Component基于Fragment管理页面导航,用Fragment能更方便实现底部导航、滑动切换等交互。

最佳实践

  • 单一职责原则:Activity管全局(权限、系统交互、生命周期统筹),Fragment专注自己的UI和局部业务,别把所有代码堆在Activity里。
  • 用ViewModel共享数据:Activity和Fragment、多个Fragment之间传数据,别用Intent或复杂接口回调,用ViewModel+LiveData,数据生命周期独立,还能避免内存泄漏。
  • 尽量别嵌套Fragment:嵌套会让生命周期逻辑变得复杂,调试难度飙升,能用平级Fragment或拆分Activity就别嵌套。
  • 拥抱官方组件:用Navigation Component管理Fragment跳转,用ViewPager2做滑动切换,这些组件已经帮你处理了很多生命周期和状态保存的坑。
  • 做好状态保存:不管是Activity还是Fragment,都要在onSaveInstanceState里存好关键数据,防止横竖屏切换或后台被杀后数据丢失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 02:40:35