当前位置: 首页 > ops >正文

AndroidX中ComponentActivity与原生 Activity 的区别

一、AndroidX 与原生 Activity 的区别

1. 概念与背景
原生 Activity:指 Android 早期(API 1 起)就存在于 android.app 包下的 Activity 类(如 android.app.Activity),是 Android 最初的 Activity 实现,属于原生 Android 框架的一部分。
AndroidX:是 Google 在 2018 年推出的支持库(Jetpack 的核心),旨在解决原生库的版本碎片化问题,统一依赖管理。AndroidX 中的 Activity 位于 androidx.activity 包下(如 androidx.activity.ComponentActivity),是对原生 Activity 的增强和替代。
2. 核心区别

维度原生 Activity(android.app.ActivityAndroidX Activity(androidx.activity.ComponentActivity
所属体系属于 Android 原生框架(android.app 包),是传统 Activity 的基础类。属于 AndroidX 库(androidx.activity 包),是 AndroidX 体系下 Activity 的基础类。
生命周期组件支持不直接支持 Lifecycle 组件,需手动实现 LifecycleOwner 接口才能使用 Lifecycle 观察者模式。内置实现 LifecycleOwner 接口,原生支持 Lifecycle 组件,可直接通过 getLifecycle() 管理生命周期观察者(如结合 ViewModel、LiveData)。
Fragment 支持仅支持原生 android.app.Fragment(已被废弃),且功能有限、兼容性差。本身不直接处理 Fragment,但作为 FragmentActivity 的父类,间接支持 AndroidX 中的 androidx.fragment.app.Fragment(现代 Fragment 体系)。
扩展功能仅提供基础生命周期和系统交互能力,无内置现代开发特性(如 DataBinding、权限请求简化等)。集成多种 AndroidX 扩展能力,例如:
- 支持 ActivityResultContract 简化权限和Activity结果处理
- 内置 SavedStateRegistry 管理状态保存与恢复
- 兼容 Jetpack Compose(通过 ComponentActivity.setContent())。
继承关系定位是原生框架中所有 Activity 的根父类(如 ListActivityTabActivity 等,多已废弃)。是 AndroidX 体系中 Activity 的顶层父类,AppCompatActivityFragmentActivity 等均直接继承自它。
兼容性仅依赖系统版本,高版本 API 无法向下兼容低版本设备。通过 AndroidX 库的适配层,可在低版本设备上使用高版本 API 特性(如在 API 21 以下使用 Lifecycle)。
官方维护状态仅接收 bug 修复,无新功能更新,逐步被 AndroidX 替代。是 Google 官方主推的 Activity 基础类,持续更新新功能(如 Compose 集成、状态管理优化)。

二、Context、Activity、FragmentActivity 等的继承关系

  1. 核心类的继承树
    以下是 Android 中与界面相关的核心类的继承关系(从顶层到具体实现):
java.lang.Object
├─ android.content.Context                // 上下文基类,提供系统资源访问、组件交互能力
│  ├─ android.content.ContextWrapper      // 上下文包装类,用于扩展 Context 功能
│  │  ├─ android.view.ContextThemeWrapper // 支持主题的上下文包装类(为界面元素提供主题)
│  │  │  ├─ android.app.Activity          // 原生 Activity(android.app 包)
│  │  │  │  └─ androidx.core.app.ComponentActivity  // 早期 AndroidX 过渡类(已废弃)
│  │  │  └─ androidx.activity.ComponentActivity     // AndroidX 核心 Activity 基类
│  │  │     ├─ androidx.fragment.app.FragmentActivity // 支持 Fragment 的 Activity
│  │  │     │  └─ androidx.appcompat.app.AppCompatActivity // 兼容 ActionBar 的 Activity(最常用)
│  │  │     └─ ...(其他 AndroidX 衍生类,如 ComponentActivity 的子类)

三、总结

AndroidX 是原生框架的升级替代:提供更丰富的功能(如 Lifecycle 支持)和更好的兼容性,推荐优先使用。
AppCompatActivity 是当前 Android 开发中实现 Activity 的首选

http://www.xdnf.cn/news/15594.html

相关文章:

  • STM32+w5500+TcpClient学习笔记
  • JAVA中StringBuilder类,StringJoiner类构造函数方法简单介绍
  • [2025CVPR-目标检测方向] CorrBEV:多视图3D物体检测
  • 基于 HT 的 3D 可视化智慧矿山开发实现
  • 短视频矩阵系统哪家好?全面解析与推荐
  • 无人机传感器模组运行与技术难点分析
  • 嵌入式数据结构之顺序表总结
  • 自学力扣:最长连续序列
  • 小结:Spring MVC 的 XML 的经典配置方式
  • 【每日算法】专题十三_队列 + 宽搜(bfs)
  • 详解Linux(Ubuntu/RedHat/CentOS)及国产服务器统一加域管理方案
  • 一款实用的.NET Core加密解密工具类库
  • 纯前端html实现图片坐标与尺寸(XY坐标及宽高)获取
  • 贴吧项目总结二
  • 神经网络常见激活函数 15-B-SiLU 函数
  • 如何在银河麒麟桌面系统中启用 sudo 密码的星号反馈
  • 数据结构排序算法总结(C语言实现)
  • Planning Agent:基于大模型的动态规划与ReAct机制,实现复杂问题自适应执行求解
  • 【软件测试】软件测试分类与方法解析:目标到工具
  • 【Dv3Admin】菜单管理集成阿里巴巴自定义矢量图标库
  • Linux手动安装Nginx(基于Centos 7)
  • 网络通信之基础知识
  • 项目的存量接口怎么低成本接入MCP?
  • 暑期算法训练.3
  • Android设备标识符详解:IMEI、ANDROID_ID与OAID
  • 针对教育行业的网络安全方案有哪些
  • 软件测试面试常见问题【含答案】
  • Effective Modern C++ 条款13:优先考虑const_iterator而非iterator
  • docker安装、启动jenkins服务,创建接口自动化定时任务(mac系统)
  • Python基础--嵌套循环