Files
mkdocs/docs/Google开发文档体系/API参考/Android_API概览.md

531 lines
16 KiB
Markdown
Raw Normal View History

2026-01-15 15:34:23 +08:00
# Android API概览
Android APIApplication Programming Interface是Android平台提供的编程接口集合开发者可以使用这些API来构建Android应用。本文档提供Android API的全面概览。
## 目录
- [API分类](#api分类)
- [API版本](#api版本)
- [API使用指南](#api使用指南)
- [API参考链接](#api参考链接)
---
## API分类
Android API按照功能和用途可以分为以下几大类
### 1. 核心组件API
Android应用的四大核心组件及其相关API
#### Activity API
- **用途**:用户界面组件,代表应用中的一个屏幕
- **主要类**`Activity`, `AppCompatActivity`
- **核心方法**`onCreate()`, `onStart()`, `onResume()`, `onPause()`, `onStop()`, `onDestroy()`
- **相关文档**[核心API - Activity](核心API.md#activity-api)
#### Service API
- **用途**:后台服务组件,执行长时间运行的任务
- **主要类**`Service`, `IntentService`, `JobIntentService`
- **核心方法**`onCreate()`, `onStartCommand()`, `onBind()`, `onDestroy()`
- **相关文档**[核心API - Service](核心API.md#service-api)
#### BroadcastReceiver API
- **用途**:广播接收器,接收系统或应用发送的广播消息
- **主要类**`BroadcastReceiver`
- **核心方法**`onReceive()`
- **相关文档**[核心API - BroadcastReceiver](核心API.md#broadcastreceiver-api)
#### ContentProvider API
- **用途**:内容提供者,在不同应用间共享数据
- **主要类**`ContentProvider`, `ContentResolver`
- **核心方法**`query()`, `insert()`, `update()`, `delete()`, `getType()`
- **相关文档**[核心API - ContentProvider](核心API.md#contentprovider-api)
### 2. UI组件API
#### View和ViewGroup
- **用途**:构建用户界面的基础组件
- **主要类**`View`, `ViewGroup`, `TextView`, `Button`, `ImageView`, `RecyclerView`
- **包名**`android.view.*`, `android.widget.*`
#### Fragment API
- **用途**模块化的UI片段
- **主要类**`Fragment`, `FragmentManager`, `FragmentTransaction`
- **核心方法**`onCreateView()`, `onViewCreated()`, `onActivityCreated()`
- **相关文档**[核心API - Fragment](核心API.md#fragment-api)
#### Material Design组件
- **用途**Material Design风格的UI组件
- **主要类**`MaterialButton`, `MaterialCardView`, `FloatingActionButton`
- **包名**`com.google.android.material.*`
### 3. Jetpack API
Jetpack是Android官方提供的库集合包含多个组件
#### 架构组件
- **ViewModel**管理UI相关的数据
- **LiveData**:可观察的数据持有者
- **Room**SQLite数据库抽象层
- **WorkManager**:后台任务管理
- **Navigation**:应用内导航
- **相关文档**[Jetpack API](Jetpack_API.md)
#### UI组件
- **Jetpack Compose**声明式UI工具包
- **ViewPager2**:页面滑动组件
- **相关文档**[Jetpack API](Jetpack_API.md)
#### 其他组件
- **Data Binding**:数据绑定库
- **Lifecycle**:生命周期感知组件
- **Paging**:分页加载数据
- **相关文档**[Jetpack API](Jetpack_API.md)
### 4. 系统服务API
#### 系统服务
- **ActivityManager**Activity管理服务
- **WindowManager**:窗口管理服务
- **NotificationManager**:通知管理服务
- **LocationManager**:位置管理服务
- **TelephonyManager**:电话管理服务
- **相关文档**[系统API](系统API.md)
#### 系统功能
- **权限管理**:运行时权限申请
- **文件系统**:文件读写操作
- **网络通信**HTTP/HTTPS请求
- **传感器**:设备传感器数据
- **相关文档**[系统API](系统API.md)
### 5. 数据存储API
#### SharedPreferences
- **用途**:键值对数据存储
- **主要类**`SharedPreferences`, `SharedPreferences.Editor`
#### SQLite数据库
- **用途**:关系型数据库存储
- **主要类**`SQLiteDatabase`, `SQLiteOpenHelper`
- **推荐使用**RoomJetpack组件
#### 文件存储
- **用途**:文件读写操作
- **主要类**`File`, `FileInputStream`, `FileOutputStream`
#### ContentProvider
- **用途**:跨应用数据共享
- **相关文档**[核心API - ContentProvider](核心API.md#contentprovider-api)
### 6. 网络通信API
#### HTTP客户端
- **HttpURLConnection**标准HTTP客户端
- **OkHttp**第三方HTTP客户端推荐
- **Retrofit**RESTful API客户端推荐
#### WebSocket
- **用途**:实时双向通信
- **主要类**`WebSocket`, `WebSocketClient`
### 7. 多媒体API
#### 媒体播放
- **MediaPlayer**:音频/视频播放
- **ExoPlayer**:高级媒体播放器(推荐)
#### 相机
- **Camera API**:相机操作(已废弃)
- **CameraX**现代相机API推荐
#### 图像处理
- **Bitmap**:位图操作
- **Canvas**:画布绘制
### 8. Intent和导航API
#### Intent API
- **用途**:组件间通信和启动
- **主要类**`Intent`, `IntentFilter`
- **核心方法**`putExtra()`, `getExtra()`, `setAction()`, `setData()`
- **相关文档**[核心API - Intent](核心API.md#intent-api)
#### 导航
- **Navigation Component**应用内导航Jetpack
- **Deep Linking**:深度链接
---
## API版本
Android API按照Android版本进行版本控制每个Android版本对应一个API级别API Level
### API级别说明
API级别是一个整数唯一标识Android平台版本的框架API修订版。API级别用于
- 指定应用支持的最低Android版本
- 指定应用目标编译的Android版本
- 判断API是否可用
### Android版本与API级别对照表
| Android版本 | API级别 | 版本代号 | 发布时间 | 主要特性 |
|------------|---------|----------|----------|----------|
| Android 15 | API 35 | Vanilla Ice Cream | 2024 | 部分媒体访问、通知权限增强 |
| Android 14 | API 34 | Upside Down Cake | 2023 | 部分媒体访问、通知权限 |
| Android 13 | API 33 | Tiramisu | 2022 | 通知权限、运行时权限细化 |
| Android 12L | API 32 | Snow Cone v2 | 2022 | 大屏设备优化 |
| Android 12 | API 31 | Snow Cone | 2021 | Material You、隐私面板 |
| Android 11 | API 30 | Red Velvet Cake | 2020 | 包可见性、分区存储 |
| Android 10 | API 29 | Quince Tart | 2019 | 分区存储、深色主题 |
| Android 9 | API 28 | Pie | 2018 | 自适应图标、通知渠道 |
| Android 8.1 | API 27 | Oreo | 2017 | 通知渠道、后台限制 |
| Android 8.0 | API 26 | Oreo | 2017 | 通知渠道、后台限制 |
| Android 7.1 | API 25 | Nougat | 2016 | 多窗口、通知增强 |
| Android 7.0 | API 24 | Nougat | 2016 | 多窗口、通知增强 |
| Android 6.0 | API 23 | Marshmallow | 2015 | 运行时权限、Doze模式 |
| Android 5.1 | API 22 | Lollipop | 2015 | Material Design |
| Android 5.0 | API 21 | Lollipop | 2014 | Material Design、ART运行时 |
### 版本兼容性
#### minSdkVersion
- **作用**指定应用支持的最低Android版本
- **设置**:在`build.gradle`中配置
- **示例**`minSdkVersion 21`支持Android 5.0及以上)
#### targetSdkVersion
- **作用**指定应用目标编译的Android版本
- **设置**:在`build.gradle`中配置
- **示例**`targetSdkVersion 34`目标Android 14
#### compileSdkVersion
- **作用**指定编译时使用的SDK版本
- **设置**:在`build.gradle`中配置
- **示例**`compileSdkVersion 34`使用Android 14 SDK编译
### API版本检查
```java
// 检查API级别
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// API 23 (Android 6.0) 及以上可用
// 例如:运行时权限
}
// 使用@RequiresApi注解
@RequiresApi(Build.VERSION_CODES.O)
private void useNotificationChannel() {
// 需要API 26 (Android 8.0) 及以上
}
```
### 版本特定API
不同Android版本引入了新的API和功能
#### Android 6.0 (API 23)
- 运行时权限:`checkSelfPermission()`, `requestPermissions()`
- Doze模式省电优化
#### Android 8.0 (API 26)
- 通知渠道:`NotificationChannel`
- 后台限制:后台服务限制
#### Android 10 (API 29)
- 分区存储:`Scoped Storage`
- 深色主题:系统级深色模式
#### Android 11 (API 30)
- 包可见性:`<queries>`声明
- 分区存储:强制执行
#### Android 12 (API 31)
- Material You动态颜色
- 隐私面板:权限使用透明化
#### Android 13 (API 33)
- 通知权限:运行时申请
- 运行时权限细化
#### Android 14 (API 34)
- 部分媒体访问:细化媒体权限
- 通知权限增强
---
## API使用指南
### 1. 查找API文档
#### 官方API参考
- **网址**https://developer.android.com/reference
- **内容**所有Android API的完整文档
- **搜索**:可按类名、方法名搜索
#### Android Studio中的使用
- **快速文档**鼠标悬停在API上查看文档Ctrl+Q / Cmd+J
- **跳转到定义**Ctrl+点击 / Cmd+点击
- **查看使用示例**:右键菜单选择"Find Usages"
### 2. 理解API文档结构
API文档通常包含以下部分
#### 类概述
- **类名**:类的完整名称
- **包名**:类所在的包
- **继承关系**:类的继承层次
- **实现接口**:类实现的接口
- **类描述**:类的用途和功能说明
#### 常量
- **常量列表**:类中定义的常量
- **常量值**:常量的具体值
- **常量说明**:常量的用途
#### 构造方法
- **构造方法列表**:可用的构造方法
- **参数说明**:构造方法的参数
- **使用示例**:构造方法的使用示例
#### 方法
- **方法签名**:方法名、参数、返回值
- **方法描述**:方法的功能说明
- **参数说明**:每个参数的含义
- **返回值说明**:返回值的含义
- **异常说明**:可能抛出的异常
- **使用示例**:方法的使用示例
#### 相关API
- **相关类**:相关的其他类
- **相关方法**:相关的其他方法
### 3. API使用步骤
#### 步骤1导入包
```java
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
```
#### 步骤2检查API可用性
```java
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// 使用API 23及以上版本的功能
}
```
#### 步骤3调用API
```java
// 创建Intent
Intent intent = new Intent(this, MainActivity.class);
intent.putExtra("key", "value");
// 启动Activity
startActivity(intent);
```
#### 步骤4处理异常
```java
try {
// 使用可能抛出异常的API
File file = new File(path);
FileInputStream fis = new FileInputStream(file);
} catch (FileNotFoundException e) {
// 处理异常
e.printStackTrace();
}
```
### 4. 最佳实践
#### 使用最新API
- **推荐**使用最新的稳定API版本
- **原因**新API通常性能更好、功能更强
- **注意**:考虑向后兼容性
#### 版本兼容性处理
```java
// 使用Build.VERSION.SDK_INT检查版本
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// 使用Android 8.0及以上版本的API
NotificationChannel channel = new NotificationChannel(...);
} else {
// 使用旧版本API或替代方案
}
```
#### 权限检查
```java
// 使用API前检查权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
== PackageManager.PERMISSION_GRANTED) {
// 使用相机API
} else {
// 请求权限
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.CAMERA}, REQUEST_CODE);
}
```
#### 空值检查
```java
// 检查返回值是否为空
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
if (cursor != null) {
try {
// 使用cursor
while (cursor.moveToNext()) {
// 处理数据
}
} finally {
cursor.close();
}
}
```
#### 资源释放
```java
// 及时释放资源
@Override
protected void onDestroy() {
super.onDestroy();
if (receiver != null) {
unregisterReceiver(receiver);
}
if (cursor != null) {
cursor.close();
}
}
```
### 5. 常见问题
#### Q1: 如何知道某个API在哪个版本可用
**A:** 查看API文档中的"Since"信息,或使用`Build.VERSION.SDK_INT`检查。
#### Q2: 如何处理API废弃
**A:**
- 查看文档中的`@Deprecated`注解
- 查看推荐的替代API
- 逐步迁移到新API
#### Q3: 如何查找API的使用示例
**A:**
- 查看官方API文档中的示例代码
- 查看GitHub上的官方示例项目
- 使用Android Studio的"Find Usages"功能
#### Q4: 如何调试API调用问题
**A:**
- 使用Log输出调试信息
- 使用Android Studio的调试器
- 查看异常堆栈信息
- 检查权限和配置
---
## API参考链接
### 官方API文档
#### 核心API文档
- **Android API参考**https://developer.android.com/reference
- **核心组件API**https://developer.android.com/reference/android/app/package-summary
- **UI组件API**https://developer.android.com/reference/android/widget/package-summary
#### Jetpack API文档
- **Jetpack API参考**https://developer.android.com/jetpack/androidx/versions
- **架构组件**https://developer.android.com/topic/libraries/architecture
- **Jetpack Compose**https://developer.android.com/jetpack/compose
#### 系统API文档
- **系统服务API**https://developer.android.com/reference/android/app/package-summary
- **权限API**https://developer.android.com/reference/android/Manifest.permission
- **系统功能API**https://developer.android.com/reference/android/os/package-summary
### 版本特定文档
#### Android版本文档
- **Android版本概览**https://developer.android.com/about/versions
- **Android 14**https://developer.android.com/about/versions/14
- **Android 13**https://developer.android.com/about/versions/13
- **Android 12**https://developer.android.com/about/versions/12
- **Android 11**https://developer.android.com/about/versions/11
- **Android 10**https://developer.android.com/about/versions/10
#### API级别参考
- **API级别表**https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels
- **版本代码常量**https://developer.android.com/reference/android/os/Build.VERSION_CODES
### 学习资源
#### 官方指南
- **Android开发者指南**https://developer.android.com/guide
- **API使用指南**https://developer.android.com/guide/topics/manifest
- **最佳实践**https://developer.android.com/topic/performance/best-practices
#### 代码示例
- **官方示例项目**https://github.com/android
- **代码实验室**https://developer.android.com/codelabs
- **架构示例**https://github.com/android/architecture-samples
#### 视频教程
- **Android Developers YouTube**https://www.youtube.com/user/androiddevelopers
- **Google I/O**https://io.google/
- **Android Dev Summit**https://developer.android.com/dev-summit
### 工具和资源
#### 开发工具
- **Android Studio**https://developer.android.com/studio
- **SDK管理器**https://developer.android.com/studio/intro/update
- **命令行工具**https://developer.android.com/studio/command-line
#### 社区资源
- **Stack Overflow**https://stackoverflow.com/questions/tagged/android
- **Reddit**https://www.reddit.com/r/androiddev/
- **官方博客**https://android-developers.googleblog.com/
### 快速参考
#### 常用API快速链接
- **Activity**https://developer.android.com/reference/android/app/Activity
- **Service**https://developer.android.com/reference/android/app/Service
- **BroadcastReceiver**https://developer.android.com/reference/android/content/BroadcastReceiver
- **ContentProvider**https://developer.android.com/reference/android/content/ContentProvider
- **Fragment**https://developer.android.com/reference/androidx/fragment/app/Fragment
- **Intent**https://developer.android.com/reference/android/content/Intent
#### 本地文档
- [核心API](核心API.md) - Activity、Service、BroadcastReceiver、ContentProvider、Fragment、Intent
- [Jetpack API](Jetpack_API.md) - Jetpack组件API
- [系统API](系统API.md) - 系统服务和功能API
---
## 总结
Android API提供了丰富的功能帮助开发者构建功能强大的Android应用。使用API时需要注意
1. **版本兼容性**检查API的最低支持版本
2. **权限管理**使用需要权限的API前先申请权限
3. **资源管理**:及时释放资源,避免内存泄漏
4. **异常处理**:正确处理可能出现的异常
5. **最佳实践**:遵循官方推荐的最佳实践
建议:
- 定期查看官方API文档获取最新信息
- 使用Android Studio的代码提示和文档功能
- 参考官方示例代码学习API使用
- 关注API的废弃和替代方案
---
*最后更新2024年*