531 lines
16 KiB
Markdown
531 lines
16 KiB
Markdown
# 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年*
|