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

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.dtcms.com/a/285604.html

相关文章:

  • 关于字符编辑器vi、vim版本的安装过程及其常用命令:
  • 从抓包GitHub Copilot认证请求,认识OAuth 2.0技术
  • web3 区块链技术与用
  • 基于深度学习的语音识别:从音频信号到文本转录
  • 开源的大语言模型(LLM)应用开发平台Dify
  • 如何用Python并发下载?深入解析concurrent.futures 与期物机制
  • 服务攻防-Java组件安全FastJson高版本JNDI不出网C3P0编码绕WAF写入文件CI链
  • ARM64高速缓存,内存属性及MAIR配置
  • 预测导管原位癌浸润性复发的深度学习:利用组织病理学图像和临床特征
  • Nand2Tetris(计算机系统要素)学习笔记 Project 3
  • sqli(1-8)
  • ASP.NET Core Web API 内存缓存(IMemoryCache)入门指南
  • Pytorch下载Mnist手写数据识别训练数据集的代码详解
  • PyTorch新手实操 安装
  • 填坑 | React Context原理
  • SpringMVC + Tomcat10
  • 小结:Spring MVC 的 XML 的经典配置方式
  • 计算机视觉与机器视觉
  • Tensorflow小白安装教程(包含GPU版本和CPU版本)
  • C++并发编程-13. 无锁并发队列
  • div和span区别
  • 【Python】python 爬取某站视频批量下载
  • 前端实现 web获取麦克风权限 录制音频 (需求:ai对话问答)
  • 20250718【顺着234回文链表做两题反转】Leetcodehot100之20692【直接过12明天吧】今天计划
  • AugmentCode还没对个人开放?
  • STL—— list迭代器封装的底层讲解
  • 71 模块编程之新增一个字符设备
  • Proto文件从入门到精通——现代分布式系统通信的基石(含实战案例)
  • 标题 “Python 网络爬虫 —— selenium库驱动浏览器
  • 光伏电站工业通信网络解决方案:高可靠工业通信架构与设备选型