Files
mkdocs/docs/GoogleAndroid开发文档体系/API参考/Android_API概览.md
2026-01-15 15:34:23 +08:00

531 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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年*