Android Studio 中的不同 Activity 类型

在我们日常的 Android 开发工作中,Android Studio 依然是我们构建卓越应用的核心堡垒。作为基于 IntelliJ IDEA 的官方 IDE,它不仅提供了稳健的编译系统,还在不断演进以适应 2026 年的开发需求。我们要聊的不仅仅是代码编辑,而是关于生产力:从极速的模拟器到“Apply Changes”这种无需重启即可推送代码更改的功能,这些都在极大地提升我们的开发效率。

但是,当我们启动一个新的项目时,面对那个看似简单的“选择 Activity 模板”对话框,你是否也曾犹豫过?在这个对话框背后,实际上隐藏着 Google 对现代 Android 架构的最佳实践建议。今天,我们将不仅仅是罗列这些 Activity,而是会结合 2026 年的技术视角——包括 AI 辅助编程Material You 设计规范,深入探讨这些模板背后的工程逻辑。

Android Studio 中的 Activity 模板全景解析

在我们创建新项目时,通常会看到以下几类 Activity(为了贴合现代语境,我们重点关注最具代表性的几种):

  • No Activity (无 Activity): 绝对的空白画布。
  • Empty Activity (空 Activity): 最常见的起点,带有基础框架。
  • Basic Activity (基本 Activity): 基于 Jetpack Navigation 的现代导航模板。
  • Bottom Navigation Activity (底部导航 Activity): 适用于顶级层级结构的应用。
  • Fullscreen Activity (全屏 Activity): 沉浸式体验的首选。
  • Google Maps Activity / AdMob Activity: 特定功能的快速集成。
  • (2026 新视角) Compose Activity: 虽然未在旧文中列出,但这已是现代开发的标准。

让我们深入探讨其中几个关键类型,并看看在 2026 年我们该如何利用 AI 工具(如 Cursor 或 Copilot)来最大化它们的效能。

#### 1. Empty Activity vs. No Activity:极简主义的选择

No Activity 创建的是完全空白的项目,连 MainActivity 都没有。这种模板通常用于库的开发,或者我们想要从头构建架构(比如多模块项目中的 App Shell 模块)时。

相比之下,Empty Activity 是大多数应用的起点。它会生成一个 INLINECODE6a568c64 (或 Java) 和对应的布局文件 INLINECODEedfbc224。

在 2026 年,我们如何看待 Empty Activity?

当我们选择 Empty Activity 时,我们实际上是在选择“由自己掌控依赖注入和导航”。在现代开发中,我们通常会立刻删除自动生成的 TextView,并引入 Hilt (Dependency Injection)Jetpack Compose

> 💡 专家提示: 如果你正在使用 AI 编程工具(如 Cursor),在创建 Empty Activity 后,你可以直接提示 AI:“为这个 Empty Activity 配置 Hilt 模块,并设置一个基于 ViewModel 的基础架构。” AI 会瞬间帮你完成那些繁琐的 Gradle 配置和基类编写工作,这就是我们所说的 Vibe Coding(氛围编程)——你负责构思架构,AI 负责填充样板代码。

#### 2. Basic Activity:现代导航的基石

Basic Activity 是理解现代 Android 应用的关键。不同于旧版的 INLINECODE3af9ec51(以前只是个 ActionBar),现在的版本默认集成了 Navigation ComponentViewModelLiveData/StateFlow。它包含了一个 INLINECODEdd4acd2b 和两个 Fragment 占位符。
为什么我们推荐使用它?

在 2026 年,单一 Activity 架构已成为绝对的标准。我们不再在一个 App 中启动多个 Activity 实例来管理界面,而是使用 Fragment(或 Compose Destination)在同一个 Activity 内切换。Basic Activity 模板正好为我们搭建了这个框架:

  • Navigation Graph: 声明式地定义用户流向。
  • Safe Args: 确保类型安全的参数传递。

生产级代码示例:

假设我们想扩展 Basic Activity 来处理一些复杂的业务逻辑,比如从网络获取数据并更新 UI。在现代开发中,我们会这样配合 AI 来编写代码:

// MainActivity.kt - 由 AI 辅助生成的典型结构
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
    // 在 2026 年,我们几乎总是使用 Hilt 进行依赖注入
    // private val viewModel: MainViewModel by viewModels() 

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // 设置工具栏,Basic Activity 默认包含
        val toolbar = findViewById(R.id.toolbar)
        setSupportActionBar(toolbar)

        // 观察 ViewModel 的 UI 状态
        // viewModel.uiState.collectAsState(lifecycle) {
        //     // 更新 UI
        // }
    }

    override fun onCreateOptionsMenu(menu: Menu): Boolean {
        // Inflate the menu; this adds items to the action bar if it is present.
        menuInflater.inflate(R.menu.menu_main, menu)
        return true
    }
}

在这个阶段,与其手动编写 INLINECODEe9b0dcff 的点击处理逻辑,我们通常会问 AI:“根据 menumain.xml 中的选项,生成对应的 onOptionsItemSelected 处理逻辑,并用 Navigation Component 处理页面跳转。” 这种工作流能将 15 分钟的工作压缩到 30 秒。

#### 3. Bottom Navigation Activity:用户体验的标准配置

当我们开发像 InstagramWhatsApp 这样的顶级应用时,Bottom Navigation Activity 是首选模板。它在 2026 年的设计规范中依然占据统治地位,因为它是拇指操作最友好的导航方式。

技术内幕与优化:

这个模板预设了三个 Tab(Home, Dashboard, Notifications)。在现代工程实践中,我们需要特别注意以下性能陷阱:

  • 状态丢失: 切换 Tab 时,默认的 INLINECODE3e801052 Fragment 操作会销毁视图。我们必须使用 INLINECODE68a7be6e 的隐藏/显示策略,或者直接使用 Jetpack Navigation 的最新特性来保存状态。
  • 多 Module 架构: 在大型应用中,不要把所有 Fragment 代码都塞在 app 模块下。我们通常会利用 Gradle 版本目录多模块 Gradle 构建,将每个 Tab 的功能拆分为独立的 Feature Module。

常见陷阱与解决方案:

你可能会遇到这样的情况:底部导航栏在快速切换时图标闪烁,或者状态栏高度计算错误(尤其是在折叠屏手机上)。

解决代码(基于 Material 3):

我们需要确保布局遵循 INLINECODEe391a104 或 INLINECODE298eb9d2 的最佳实践,并处理系统栏的嵌入。

// binding logic in Fragment or Activity
private fun setupBottomNav() {
    val navView: BottomNavigationView = binding.navView
    
    // 将底部导航与 NavController 绑定
    val navController = findNavController(R.id.nav_host_fragment_activity_bottom_nav)
    
    // 2026 最佳实践:使用 AppBarConfiguration 来管理顶部行为
    val appBarConfiguration = AppBarConfiguration(
        setOf(
            R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications
        )
    )
    setupActionBarWithNavController(navController, appBarConfiguration)
    navView.setupWithNavController(navController)
}

#### 4. Fullscreen Activity:沉浸式体验的挑战

Fullscreen Activity 模板为我们提供了一个全屏内容的起始点,常用于启动页、图片查看器或视频播放器。
2026 年的挑战:

现在的手机屏幕形态千奇百怪:挖孔屏、水滴屏、折叠屏。处理“系统 UI”的可见性(沉浸模式)比以往任何时候都复杂。

生产级实现技巧:

我们需要使用 WindowInsetsControllerCompat 来精准控制状态栏和导航栏,而不是旧式的 UI_FLAG

// 这是我们处理全屏沉浸式的标准代码片段
private fun hideSystemUI() {
    WindowCompat.setDecorFitsSystemWindows(window, false)
    WindowInsetsControllerCompat(window, window.decorView).let { controller ->
        // 隐藏状态栏和导航栏
        controller.hide(WindowInsetsCompat.Type.systemBars())
        // 即使在用户滑动时也保持隐藏(行为上的侵入性)
        controller.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
    }
}

故障排查:如果你发现在折叠屏上,你的全屏内容被铰链遮挡了,这意味着你使用了错误的 Layout 布局或者没有正确处理 FoldingFeature。在这一步,利用 AI 工具分析布局层级通常能快速定位问题。

2026 年开发新范式:AI 与全栈协作

在讨论完具体的 Activity 模板后,我们必须谈谈 2026 年开发环境的变化。现在的 Android Studio 已经不仅仅是一个代码编辑器,它是一个AI 增强的协作中心

1. AI 辅助工作流

在我们最近的几个项目中,我们已经不再手动编写基础的 RecyclerView Adapter、ViewHolder 或简单的数据类了。我们使用 GitHub CopilotAndroid Studio Bot 来生成这些代码。

  • 决策建议: 哪怕是最资深的工程师,也应该让 AI 帮你编写单元测试的样板代码。让我们专注于业务逻辑的创新,把繁琐的代码留给 AI。

2. 实时协作与云原生

就像 Figma 让设计协作变得一样,现在的 Android 开发也在向云端迁移。我们可以通过 Firebase Test Lab 直接在云端模拟各种设备(包括最新的 Android Foldables)来测试我们编写的 Fullscreen Activity 或 Bottom Navigation 逻辑,而无需购买昂贵的真机。

3. 技术债务与长期维护

选择正确的 Activity 模板实际上是在为未来的维护铺路。例如,如果你一开始为了图方便选了旧的模板(导致代码中包含废弃的 onActivityResult),那么在适配 2026 年新的 Activity Result API权限管理 时,你将付出惨痛的代价。

最佳实践总结

  • 优先选择 Empty ActivityBasic Activity 作为起点。
  • 使用 Jetpack Compose:如果是新项目,强烈建议寻找 Compose 模板,而不是传统的 XML 布局模板。声明式 UI 是未来。
  • 拥抱 AI:让 AI 帮你生成导航图、Room 数据库实体类和网络请求 Retrofit 接口。

结语

无论你是初学者还是经验丰富的架构师,理解 Android Studio 中这些 Activity 模板的本质——即它们是对 Jetpack 库Material Design 的一种封装——是至关重要的。在 2026 年,不仅要会“写”代码,更要会“用”工具,利用 AI 和现代框架来构建健壮、高性能的 Android 应用。

在这篇文章中,我们探讨了如何从基础模板出发,结合最新的开发理念,构建出企业级的应用架构。希望这些经验能帮助你在下一个项目中做出更明智的技术选型。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/18362.html
点赞
0.00 平均评分 (0% 分数) - 0