# Android API概览

Android API（Application 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`
- **推荐使用**：Room（Jetpack组件）

#### 文件存储
- **用途**：文件读写操作
- **主要类**：`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年*
