From 54e210c0dfb20312493f6900034b5342e15f4593 Mon Sep 17 00:00:00 2001 From: renjianbo <18691577328@163.com> Date: Thu, 15 Jan 2026 15:34:23 +0800 Subject: [PATCH] =?UTF-8?q?=E9=8F=87=E5=AD=98=E6=9F=8A=E9=8F=82=E5=9B=A8?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .obsidian/workspace.json | 72 +- .../API参考/Android_API概览.md | 530 ++++++++ .../API参考/Jetpack_API.md | 10 + .../API参考/核心API.md | 1111 +++++++++++++++++ .../API参考/系统API.md | 8 + docs/GoogleAndroid开发文档体系/README.md | 84 ++ .../入门指南/Android_Studio使用指南.md | 426 +++++++ .../入门指南/Android开发入门.md | 232 ++++ .../入门指南/开发环境搭建.md | 393 ++++++ .../入门指南/第一个Android应用.md | 330 +++++ .../工具和资源/Android_Studio.md | 672 ++++++++++ .../工具和资源/官方资源链接.md | 524 ++++++++ .../工具和资源/性能分析工具.md | 657 ++++++++++ .../工具和资源/构建系统.md | 593 +++++++++ .../工具和资源/调试工具.md | 597 +++++++++ .../最佳实践/代码质量最佳实践.md | 9 + .../最佳实践/安全最佳实践.md | 9 + .../最佳实践/应用架构最佳实践.md | 9 + .../最佳实践/性能优化最佳实践.md | 10 + .../最佳实践/用户体验最佳实践.md | 9 + .../核心主题/Jetpack组件.md | 10 + .../核心主题/Material_Design.md | 9 + .../核心主题/后台任务.md | 10 + .../核心主题/安全与隐私.md | 10 + .../核心主题/应用基础.md | 9 + .../核心主题/应用架构.md | 10 + .../核心主题/性能优化.md | 10 + .../核心主题/数据存储.md | 10 + .../核心主题/测试.md | 10 + .../核心主题/用户界面.md | 10 + .../示例代码/代码片段.md | 629 ++++++++++ .../示例代码/官方示例项目.md | 482 +++++++ .../示例代码/架构示例.md | 568 +++++++++ .../视频和教程/在线课程.md | 7 + .../视频和教程/官方视频教程.md | 8 + .../视频和教程/技术会议.md | 8 + mkdocs.yml | 36 + 37 files changed, 8085 insertions(+), 36 deletions(-) create mode 100644 docs/GoogleAndroid开发文档体系/API参考/Android_API概览.md create mode 100644 docs/GoogleAndroid开发文档体系/API参考/Jetpack_API.md create mode 100644 docs/GoogleAndroid开发文档体系/API参考/核心API.md create mode 100644 docs/GoogleAndroid开发文档体系/API参考/系统API.md create mode 100644 docs/GoogleAndroid开发文档体系/README.md create mode 100644 docs/GoogleAndroid开发文档体系/入门指南/Android_Studio使用指南.md create mode 100644 docs/GoogleAndroid开发文档体系/入门指南/Android开发入门.md create mode 100644 docs/GoogleAndroid开发文档体系/入门指南/开发环境搭建.md create mode 100644 docs/GoogleAndroid开发文档体系/入门指南/第一个Android应用.md create mode 100644 docs/GoogleAndroid开发文档体系/工具和资源/Android_Studio.md create mode 100644 docs/GoogleAndroid开发文档体系/工具和资源/官方资源链接.md create mode 100644 docs/GoogleAndroid开发文档体系/工具和资源/性能分析工具.md create mode 100644 docs/GoogleAndroid开发文档体系/工具和资源/构建系统.md create mode 100644 docs/GoogleAndroid开发文档体系/工具和资源/调试工具.md create mode 100644 docs/GoogleAndroid开发文档体系/最佳实践/代码质量最佳实践.md create mode 100644 docs/GoogleAndroid开发文档体系/最佳实践/安全最佳实践.md create mode 100644 docs/GoogleAndroid开发文档体系/最佳实践/应用架构最佳实践.md create mode 100644 docs/GoogleAndroid开发文档体系/最佳实践/性能优化最佳实践.md create mode 100644 docs/GoogleAndroid开发文档体系/最佳实践/用户体验最佳实践.md create mode 100644 docs/GoogleAndroid开发文档体系/核心主题/Jetpack组件.md create mode 100644 docs/GoogleAndroid开发文档体系/核心主题/Material_Design.md create mode 100644 docs/GoogleAndroid开发文档体系/核心主题/后台任务.md create mode 100644 docs/GoogleAndroid开发文档体系/核心主题/安全与隐私.md create mode 100644 docs/GoogleAndroid开发文档体系/核心主题/应用基础.md create mode 100644 docs/GoogleAndroid开发文档体系/核心主题/应用架构.md create mode 100644 docs/GoogleAndroid开发文档体系/核心主题/性能优化.md create mode 100644 docs/GoogleAndroid开发文档体系/核心主题/数据存储.md create mode 100644 docs/GoogleAndroid开发文档体系/核心主题/测试.md create mode 100644 docs/GoogleAndroid开发文档体系/核心主题/用户界面.md create mode 100644 docs/GoogleAndroid开发文档体系/示例代码/代码片段.md create mode 100644 docs/GoogleAndroid开发文档体系/示例代码/官方示例项目.md create mode 100644 docs/GoogleAndroid开发文档体系/示例代码/架构示例.md create mode 100644 docs/GoogleAndroid开发文档体系/视频和教程/在线课程.md create mode 100644 docs/GoogleAndroid开发文档体系/视频和教程/官方视频教程.md create mode 100644 docs/GoogleAndroid开发文档体系/视频和教程/技术会议.md diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 35c3102..70b43ff 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -185,41 +185,41 @@ }, "active": "9a5781991bf94030", "lastOpenFiles": [ - "docs/Obsidian笔记体系/Daily/2026-01-15.md", - "docs/android面试/面试技巧/薪资谈判.md", - "docs/android面试/面试技巧/项目介绍.md", - "docs/android面试/面试技巧/常见问题.md", - "docs/android面试/面试技巧/自我介绍.md", - "docs/android面试/面试技巧", - "docs/android面试/项目经验/技术选型.md", - "docs/android面试/项目经验/团队协作经验.md", - "docs/android面试/项目经验/问题排查经验.md", - "docs/android面试/项目经验/性能优化实践.md", - "docs/android面试/项目经验/项目架构设计.md", - "docs/android面试/项目经验", - "docs/android面试/系统原理/系统启动流程.md", - "docs/android面试/系统原理/Zygote进程.md", - "docs/android面试/系统原理/进程与线程.md", - "docs/android面试/系统原理/内存管理.md", - "docs/android面试/系统原理/事件分发机制.md", - "docs/android面试/系统原理/View绘制流程.md", - "docs/android面试/系统原理/WMS原理.md", - "docs/android面试/系统原理/AMS原理.md", - "docs/android面试/系统原理/Binder机制.md", - "docs/android面试/系统原理", - "docs/android面试/开源框架/Jetpack组件.md", - "docs/android面试/开源框架/Dagger2原理.md", - "docs/android面试/开源框架/ButterKnife原理.md", - "docs/android面试/开源框架/EventBus原理.md", - "docs/android面试/开源框架/RxJava原理.md", - "docs/android面试/开源框架/Picasso原理.md", - "docs/android面试/开源框架/Glide原理.md", - "docs/android面试/开源框架", - "docs/android面试/算法与数据结构", - "docs/android面试/设计模式", - "docs/android面试/多线程与并发", - "docs/android面试/数据存储", - "docs/android面试/网络编程", - "docs/android面试/性能优化" + "docs/GoogleAndroid开发文档体系/视频和教程/技术会议.md", + "docs/GoogleAndroid开发文档体系/视频和教程/在线课程.md", + "docs/GoogleAndroid开发文档体系/视频和教程/官方视频教程.md", + "docs/GoogleAndroid开发文档体系/视频和教程", + "docs/GoogleAndroid开发文档体系/示例代码/架构示例.md", + "docs/GoogleAndroid开发文档体系/示例代码/代码片段.md", + "docs/GoogleAndroid开发文档体系/示例代码/官方示例项目.md", + "docs/GoogleAndroid开发文档体系/示例代码", + "docs/GoogleAndroid开发文档体系/工具和资源/官方资源链接.md", + "docs/GoogleAndroid开发文档体系/工具和资源/性能分析工具.md", + "docs/GoogleAndroid开发文档体系/工具和资源/调试工具.md", + "docs/GoogleAndroid开发文档体系/工具和资源/构建系统.md", + "docs/GoogleAndroid开发文档体系/工具和资源/Android_Studio.md", + "docs/GoogleAndroid开发文档体系/工具和资源", + "docs/GoogleAndroid开发文档体系/API参考/系统API.md", + "docs/GoogleAndroid开发文档体系/API参考/Jetpack_API.md", + "docs/GoogleAndroid开发文档体系/API参考/核心API.md", + "docs/GoogleAndroid开发文档体系/API参考/Android_API概览.md", + "docs/GoogleAndroid开发文档体系/API参考", + "docs/GoogleAndroid开发文档体系/最佳实践/代码质量最佳实践.md", + "docs/GoogleAndroid开发文档体系/最佳实践/用户体验最佳实践.md", + "docs/GoogleAndroid开发文档体系/最佳实践/安全最佳实践.md", + "docs/GoogleAndroid开发文档体系/最佳实践/性能优化最佳实践.md", + "docs/GoogleAndroid开发文档体系/最佳实践/应用架构最佳实践.md", + "docs/GoogleAndroid开发文档体系/最佳实践", + "docs/GoogleAndroid开发文档体系/核心主题/测试.md", + "docs/GoogleAndroid开发文档体系/核心主题/安全与隐私.md", + "docs/GoogleAndroid开发文档体系/核心主题/性能优化.md", + "docs/GoogleAndroid开发文档体系/核心主题/Material_Design.md", + "docs/GoogleAndroid开发文档体系/核心主题/Jetpack组件.md", + "docs/GoogleAndroid开发文档体系/核心主题/应用架构.md", + "docs/GoogleAndroid开发文档体系/核心主题", + "docs/GoogleAndroid开发文档体系/入门指南", + "docs/GoogleAndroid开发文档体系", + "docs/新建文件夹", + "docs/android面试/面试技巧" ] } \ No newline at end of file diff --git a/docs/GoogleAndroid开发文档体系/API参考/Android_API概览.md b/docs/GoogleAndroid开发文档体系/API参考/Android_API概览.md new file mode 100644 index 0000000..089009c --- /dev/null +++ b/docs/GoogleAndroid开发文档体系/API参考/Android_API概览.md @@ -0,0 +1,530 @@ +# 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) +- 包可见性:``声明 +- 分区存储:强制执行 + +#### 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年* diff --git a/docs/GoogleAndroid开发文档体系/API参考/Jetpack_API.md b/docs/GoogleAndroid开发文档体系/API参考/Jetpack_API.md new file mode 100644 index 0000000..e1deb40 --- /dev/null +++ b/docs/GoogleAndroid开发文档体系/API参考/Jetpack_API.md @@ -0,0 +1,10 @@ +# Jetpack API + +## 待补充内容 + +- Lifecycle API +- ViewModel API +- LiveData API +- Room API +- Navigation API +- WorkManager API diff --git a/docs/GoogleAndroid开发文档体系/API参考/核心API.md b/docs/GoogleAndroid开发文档体系/API参考/核心API.md new file mode 100644 index 0000000..dfbe6b3 --- /dev/null +++ b/docs/GoogleAndroid开发文档体系/API参考/核心API.md @@ -0,0 +1,1111 @@ +# 核心API + +## Activity API + +Activity是Android应用的核心组件之一,代表用户界面中的一个屏幕。以下是Activity的核心API参考。 + +### 核心类和方法 + +#### 生命周期方法 + +```java +public class Activity extends ContextThemeWrapper + implements ComponentCallbacks2, OnCreateContextMenuListener, + Window.Callback, KeyEvent.Callback, + View.OnCreateContextMenuListener, Window.OnWindowDismissedCallback { + + // 创建Activity + protected void onCreate(Bundle savedInstanceState); + + // Activity可见但不可交互 + protected void onStart(); + + // Activity可交互 + protected void onResume(); + + // Activity失去焦点 + protected void onPause(); + + // Activity不可见 + protected void onStop(); + + // Activity销毁 + protected void onDestroy(); + + // 从停止状态恢复 + protected void onRestart(); +} +``` + +#### 启动和导航 + +```java +// 启动Activity +public void startActivity(Intent intent); +public void startActivity(Intent intent, Bundle options); +public void startActivityForResult(Intent intent, int requestCode); +public void startActivityForResult(Intent intent, int requestCode, Bundle options); + +// 结束Activity +public void finish(); +public void finishActivity(int requestCode); +public void finishAffinity(); +public void finishAndRemoveTask(); + +// 返回结果 +public final void setResult(int resultCode); +public final void setResult(int resultCode, Intent data); +``` + +#### 状态保存和恢复 + +```java +// 保存状态 +protected void onSaveInstanceState(Bundle outState); +protected void onRestoreInstanceState(Bundle savedInstanceState); + +// 配置变更处理 +public void onConfigurationChanged(Configuration newConfig); +``` + +#### 窗口和视图管理 + +```java +// 设置内容视图 +public void setContentView(int layoutResID); +public void setContentView(View view); +public void setContentView(View view, ViewGroup.LayoutParams params); + +// 获取视图 +public T findViewById(int id); +public View findViewById(int id); + +// 窗口管理 +public Window getWindow(); +public void requestWindowFeature(int featureId); +public void setRequestedOrientation(int requestedOrientation); +``` + +#### Intent和结果处理 + +```java +// 获取启动Intent +public Intent getIntent(); +public void setIntent(Intent newIntent); + +// 结果处理(已废弃,推荐使用Activity Result API) +@Deprecated +protected void onActivityResult(int requestCode, int resultCode, Intent data); + +// 新的Activity Result API(推荐) +public final ActivityResultLauncher registerForActivityResult( + ActivityResultContract contract, + ActivityResultCallback callback +); +``` + +#### 权限管理 + +```java +// 请求权限 +public void requestPermissions(String[] permissions, int requestCode); + +// 权限结果回调 +public void onRequestPermissionsResult(int requestCode, + String[] permissions, + int[] grantResults); + +// 检查权限 +public int checkSelfPermission(String permission); +public boolean shouldShowRequestPermissionRationale(String permission); +``` + +#### 系统服务 + +```java +// 获取系统服务 +public Object getSystemService(String name); + +// 常用服务 +// - Context.WINDOW_SERVICE: WindowManager +// - Context.LAYOUT_INFLATER_SERVICE: LayoutInflater +// - Context.ACTIVITY_SERVICE: ActivityManager +// - Context.ALARM_SERVICE: AlarmManager +// - Context.NOTIFICATION_SERVICE: NotificationManager +``` + +#### Fragment管理 + +```java +// Fragment管理器 +public FragmentManager getSupportFragmentManager(); +public FragmentManager getFragmentManager(); // 已废弃 + +// Fragment事务 +FragmentTransaction beginTransaction(); +``` + +#### 菜单管理 + +```java +// 创建选项菜单 +public boolean onCreateOptionsMenu(Menu menu); +public boolean onPrepareOptionsMenu(Menu menu); +public boolean onOptionsItemSelected(MenuItem item); + +// 创建上下文菜单 +public void onCreateContextMenu(ContextMenu menu, View v, + ContextMenu.ContextMenuInfo menuInfo); +public boolean onContextItemSelected(MenuItem item); +``` + +#### 转场动画 + +```java +// 设置转场动画 +public void overridePendingTransition(int enterAnim, int exitAnim); + +// 共享元素动画 +public void startActivity(Intent intent, Bundle options); +``` + +### 常用常量 + +```java +// 结果码 +public static final int RESULT_OK = -1; +public static final int RESULT_CANCELED = 0; +public static final int RESULT_FIRST_USER = 1; + +// 请求码(自定义) +private static final int REQUEST_CODE_CAMERA = 1001; +private static final int REQUEST_CODE_GALLERY = 1002; +``` + +### Activity启动模式 + +```java +// AndroidManifest.xml中配置 +// android:launchMode="standard" | "singleTop" | "singleTask" | "singleInstance" + +// 通过Intent Flag控制 +Intent.FLAG_ACTIVITY_NEW_TASK +Intent.FLAG_ACTIVITY_SINGLE_TOP +Intent.FLAG_ACTIVITY_CLEAR_TOP +Intent.FLAG_ACTIVITY_CLEAR_TASK +``` + +### 最佳实践示例 + +```java +public class MainActivity extends AppCompatActivity { + private static final int REQUEST_CODE = 1001; + private ActivityResultLauncher activityLauncher; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + // 注册Activity Result Launcher + activityLauncher = registerForActivityResult( + new ActivityResultContracts.StartActivityForResult(), + result -> { + if (result.getResultCode() == RESULT_OK) { + Intent data = result.getData(); + // 处理返回结果 + } + } + ); + } + + private void startSecondActivity() { + Intent intent = new Intent(this, SecondActivity.class); + intent.putExtra("key", "value"); + activityLauncher.launch(intent); + } + + @Override + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + // 保存临时状态 + outState.putString("key", "value"); + } + + @Override + protected void onRestoreInstanceState(Bundle savedInstanceState) { + super.onRestoreInstanceState(savedInstanceState); + // 恢复状态 + String value = savedInstanceState.getString("key"); + } +} +``` + +### 相关API链接 + +- [Activity官方文档](https://developer.android.com/reference/android/app/Activity) +- [AppCompatActivity文档](https://developer.android.com/reference/androidx/appcompat/app/AppCompatActivity) +- [Activity Result API](https://developer.android.com/training/basics/intents/result) +- [Activity生命周期指南](https://developer.android.com/guide/components/activities/activity-lifecycle) +## Service API + +Service是Android应用的后台服务组件,用于执行长时间运行的操作。以下是Service的核心API参考。 + +### 核心类和方法 + +#### 生命周期方法 + +```java +public abstract class Service extends ContextWrapper implements ComponentCallbacks2 { + + // Service创建 + public void onCreate(); + + // 启动Service(startService) + public abstract IBinder onBind(Intent intent); + + // 启动命令(startService) + public int onStartCommand(Intent intent, int flags, int startId); + + // Service销毁 + public void onDestroy(); + + // 解绑Service(bindService) + public boolean onUnbind(Intent intent); + + // 重新绑定时调用 + public void onRebind(Intent intent); +} +``` + +#### 启动和停止 + +```java +// 启动Service +public ComponentName startService(Intent service); +public int startForegroundService(Intent service); // Android 8.0+ + +// 停止Service +public boolean stopService(Intent name); +public final void stopSelf(); +public final void stopSelf(int startId); + +// 绑定Service +public boolean bindService(Intent service, ServiceConnection conn, int flags); + +// 解绑Service +public void unbindService(ServiceConnection conn); +``` + +#### 前台Service + +```java +// 启动前台Service +public final void startForeground(int id, Notification notification); +public final void startForeground(int id, Notification notification, int foregroundServiceType); + +// 停止前台Service +public final void stopForeground(int flags); +public final void stopForeground(boolean removeNotification); +``` + +#### Service类型常量 + +```java +// onStartCommand返回值 +public static final int START_STICKY = 1; // 系统重启后重新创建 +public static final int START_NOT_STICKY = 2; // 系统重启后不重新创建 +public static final int START_REDELIVER_INTENT = 3; // 重新传递Intent + +// bindService标志 +public static final int BIND_AUTO_CREATE = 0x0001; +public static final int BIND_DEBUG_UNBIND = 0x0002; +public static final int BIND_NOT_FOREGROUND = 0x0004; +public static final int BIND_ABOVE_CLIENT = 0x0008; +public static final int BIND_ALLOW_OOM_MANAGEMENT = 0x0010; +public static final int BIND_WAIVE_PRIORITY = 0x0020; +public static final int BIND_IMPORTANT = 0x0040; +public static final int BIND_ADJUST_WITH_ACTIVITY = 0x0080; +``` + +#### Service通信 + +```java +// Binder通信 +public class LocalBinder extends Binder { + public MyService getService() { + return MyService.this; + } +} + +// ServiceConnection +public interface ServiceConnection { + void onServiceConnected(ComponentName name, IBinder service); + void onServiceDisconnected(ComponentName name); + default void onBindingDied(ComponentName name) {} + default void onNullBinding(ComponentName name) {} +} +``` + +### 最佳实践示例 + +```java +// 普通Service +public class MyService extends Service { + @Override + public void onCreate() { + super.onCreate(); + } + + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + // 执行后台任务 + return START_STICKY; + } + + @Override + public IBinder onBind(Intent intent) { + return null; // 不绑定 + } + + @Override + public void onDestroy() { + super.onDestroy(); + } +} + +// 绑定Service +public class BoundService extends Service { + private LocalBinder binder = new LocalBinder(); + + public class LocalBinder extends Binder { + BoundService getService() { + return BoundService.this; + } + } + + @Override + public IBinder onBind(Intent intent) { + return binder; + } + + public void doWork() { + // Service方法 + } +} +``` + +### 相关API链接 + +- [Service官方文档](https://developer.android.com/reference/android/app/Service) +- [Service生命周期指南](https://developer.android.com/guide/components/services) +- [前台Service指南](https://developer.android.com/guide/components/foreground-services) + +--- + +## BroadcastReceiver API + +BroadcastReceiver是Android应用的广播接收器组件,用于接收系统或应用发送的广播消息。以下是BroadcastReceiver的核心API参考。 + +### 核心类和方法 + +#### 接收广播 + +```java +public abstract class BroadcastReceiver { + + // 接收广播 + public abstract void onReceive(Context context, Intent intent); + + // 设置结果码 + public final void setResultCode(int code); + public final int getResultCode(); + + // 设置结果数据 + public final void setResultData(String data); + public final String getResultData(); + + // 设置结果扩展数据 + public final void setResultExtras(Bundle extras); + public final Bundle getResultExtras(boolean makeMap); + + // 中止广播(有序广播) + public final void abortBroadcast(); + + // 检查是否已中止 + public final boolean getAbortBroadcast(); +} +``` + +#### 注册和注销 + +```java +// 动态注册 +public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter); +public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter, + int flags); +public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter, + String broadcastPermission, Handler scheduler); +public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter, + String broadcastPermission, Handler scheduler, + int flags); + +// 注销 +public void unregisterReceiver(BroadcastReceiver receiver); +``` + +#### 发送广播 + +```java +// 发送普通广播 +public void sendBroadcast(Intent intent); +public void sendBroadcast(Intent intent, String receiverPermission); +public void sendBroadcast(Intent intent, String receiverPermission, Bundle options); + +// 发送有序广播 +public void sendOrderedBroadcast(Intent intent, String receiverPermission); +public void sendOrderedBroadcast(Intent intent, String receiverPermission, + BroadcastReceiver resultReceiver, Handler scheduler, + int initialCode, String initialData, Bundle initialExtras); + +// 发送粘性广播(已废弃) +@Deprecated +public void sendStickyBroadcast(Intent intent); +``` + +#### IntentFilter + +```java +public class IntentFilter implements Parcelable { + + // 添加Action + public final void addAction(String action); + + // 添加Category + public final void addCategory(String category); + + // 添加Data + public final void addDataScheme(String scheme); + public final void addDataAuthority(String host, String port); + public final void addDataPath(String path, int type); + + // 设置优先级(有序广播) + public final void setPriority(int priority); + public final int getPriority(); +} +``` + +### 常用系统广播 + +```java +// 系统广播Action +Intent.ACTION_BOOT_COMPLETED // 系统启动完成 +Intent.ACTION_SCREEN_ON // 屏幕点亮 +Intent.ACTION_SCREEN_OFF // 屏幕熄灭 +Intent.ACTION_BATTERY_CHANGED // 电池状态变化 +Intent.ACTION_POWER_CONNECTED // 电源连接 +Intent.ACTION_POWER_DISCONNECTED // 电源断开 +Intent.ACTION_TIMEZONE_CHANGED // 时区变化 +Intent.ACTION_LOCALE_CHANGED // 语言变化 +Intent.ACTION_PACKAGE_ADDED // 应用安装 +Intent.ACTION_PACKAGE_REMOVED // 应用卸载 +Intent.ACTION_PACKAGE_REPLACED // 应用更新 +Intent.ACTION_MY_PACKAGE_REPLACED // 自己的应用更新 +Intent.ACTION_PACKAGE_FULLY_REMOVED // 应用完全移除 +``` + +### 最佳实践示例 + +```java +// 动态注册 +public class MainActivity extends AppCompatActivity { + private BroadcastReceiver receiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + if (Intent.ACTION_SCREEN_ON.equals(action)) { + // 处理屏幕点亮 + } + } + }; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); + registerReceiver(receiver, filter); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + unregisterReceiver(receiver); + } +} + +// 静态注册(AndroidManifest.xml) +// +// +// +// +// +``` + +### 相关API链接 + +- [BroadcastReceiver官方文档](https://developer.android.com/reference/android/content/BroadcastReceiver) +- [广播系统指南](https://developer.android.com/guide/components/broadcasts) +- [系统广播列表](https://developer.android.com/guide/components/broadcasts#system-broadcasts) + +--- + +## ContentProvider API + +ContentProvider是Android应用的内容提供者组件,用于在不同应用间共享数据。以下是ContentProvider的核心API参考。 + +### 核心类和方法 + +#### ContentProvider + +```java +public abstract class ContentProvider implements ComponentCallbacks2 { + + // Provider创建 + public boolean onCreate(); + + // 查询数据 + public abstract Cursor query(Uri uri, String[] projection, String selection, + String[] selectionArgs, String sortOrder); + + // 插入数据 + public abstract Uri insert(Uri uri, ContentValues values); + + // 更新数据 + public abstract int update(Uri uri, ContentValues values, String selection, + String[] selectionArgs); + + // 删除数据 + public abstract int delete(Uri uri, String selection, String[] selectionArgs); + + // 获取数据类型 + public abstract String getType(Uri uri); + + // 批量操作 + public ContentProviderResult[] applyBatch(ArrayList operations); + + // 打开文件 + public ParcelFileDescriptor openFile(Uri uri, String mode); + public AssetFileDescriptor openAssetFile(Uri uri, String mode); +} +``` + +#### ContentResolver + +```java +public abstract class ContentResolver { + + // 查询数据 + public final Cursor query(Uri uri, String[] projection, String selection, + String[] selectionArgs, String sortOrder); + + // 插入数据 + public final Uri insert(Uri uri, ContentValues values); + + // 更新数据 + public final int update(Uri uri, ContentValues values, String selection, + String[] selectionArgs); + + // 删除数据 + public final int delete(Uri uri, String selection, String[] selectionArgs); + + // 批量操作 + public ContentProviderResult[] applyBatch(String authority, + ArrayList operations); + + // 注册观察者 + public void registerContentObserver(Uri uri, boolean notifyForDescendants, + ContentObserver observer); + + // 注销观察者 + public void unregisterContentObserver(ContentObserver observer); + + // 通知数据变化 + public void notifyChange(Uri uri, ContentObserver observer); + public void notifyChange(Uri uri, ContentObserver observer, int flags); +} +``` + +#### Uri和UriMatcher + +```java +// Uri操作 +public abstract class Uri implements Parcelable, Comparable { + public static Uri parse(String uriString); + public String getScheme(); + public String getAuthority(); + public List getPathSegments(); + public String getLastPathSegment(); +} + +// UriMatcher匹配 +public class UriMatcher { + public static final int NO_MATCH = -1; + + public UriMatcher(int code); + public void addURI(String authority, String path, int code); + public int match(Uri uri); +} + +// Uri构建 +public class ContentUris { + public static Uri withAppendedId(Uri contentUri, long id); + public static long parseId(Uri contentUri); +} +``` + +#### ContentValues + +```java +public class ContentValues implements Parcelable { + + public ContentValues(); + public ContentValues(int size); + public ContentValues(ContentValues from); + + // 添加值 + public void put(String key, String value); + public void put(String key, Integer value); + public void put(String key, Long value); + public void put(String key, Boolean value); + public void put(String key, Float value); + public void put(String key, Double value); + public void put(String key, byte[] value); + public void putNull(String key); + + // 获取值 + public Object get(String key); + public String getAsString(String key); + public Integer getAsInteger(String key); + public Long getAsLong(String key); + public Boolean getAsBoolean(String key); + public Float getAsFloat(String key); + public Double getAsDouble(String key); + public byte[] getAsByteArray(String key); +} +``` + +#### ContentObserver + +```java +public abstract class ContentObserver { + + public ContentObserver(Handler handler); + + // 数据变化回调 + public void onChange(boolean selfChange); + public void onChange(boolean selfChange, Uri uri); + public void onChange(boolean selfChange, Collection uris, int flags); +} +``` + +### URI格式 + +```java +// URI格式:content://authority/path/id +// 示例 +content://com.example.provider/user // 所有用户 +content://com.example.provider/user/1 // ID为1的用户 +content://com.example.provider/user/1/name // 用户1的name字段 +``` + +### 最佳实践示例 + +```java +// 使用ContentResolver查询 +Uri uri = Uri.parse("content://com.example.provider/user"); +Cursor cursor = getContentResolver().query( + uri, + new String[]{"id", "name", "email"}, + "age > ?", + new String[]{"18"}, + "name ASC" +); + +// 插入数据 +ContentValues values = new ContentValues(); +values.put("name", "John"); +values.put("email", "john@example.com"); +Uri newUri = getContentResolver().insert(uri, values); + +// 注册观察者 +ContentObserver observer = new ContentObserver(new Handler()) { + @Override + public void onChange(boolean selfChange, Uri uri) { + // 数据变化处理 + } +}; +getContentResolver().registerContentObserver(uri, true, observer); +``` + +### 相关API链接 + +- [ContentProvider官方文档](https://developer.android.com/reference/android/content/ContentProvider) +- [ContentProvider指南](https://developer.android.com/guide/topics/providers/content-providers) +- [ContentResolver文档](https://developer.android.com/reference/android/content/ContentResolver) + +--- + +## Fragment API + +Fragment是Android应用的UI片段组件,用于构建灵活的模块化界面。以下是Fragment的核心API参考。 + +### 核心类和方法 + +#### 生命周期方法 + +```java +public class Fragment implements ComponentCallbacks2, OnCreateContextMenuListener { + + // 附加到Activity + public void onAttach(Context context); + public void onAttach(Activity activity); // 已废弃 + + // Fragment创建 + public void onCreate(Bundle savedInstanceState); + + // 创建视图 + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState); + + // Activity创建完成 + public void onActivityCreated(Bundle savedInstanceState); // 已废弃 + + // Fragment可见 + public void onStart(); + public void onResume(); + + // Fragment不可见 + public void onPause(); + public void onStop(); + + // 销毁视图 + public void onDestroyView(); + + // Fragment销毁 + public void onDestroy(); + + // 从Activity分离 + public void onDetach(); + + // 保存状态 + public void onSaveInstanceState(Bundle outState); + + // 配置变更 + public void onConfigurationChanged(Configuration newConfig); +} +``` + +#### Fragment管理 + +```java +// FragmentManager +public abstract class FragmentManager { + + // 开始事务 + public abstract FragmentTransaction beginTransaction(); + + // 查找Fragment + public abstract Fragment findFragmentById(int id); + public abstract Fragment findFragmentByTag(String tag); + + // 弹出回退栈 + public abstract void popBackStack(); + public abstract void popBackStack(String name, int flags); + public abstract void popBackStackImmediate(); + + // 执行待处理操作 + public abstract boolean executePendingTransactions(); +} + +// FragmentTransaction +public abstract class FragmentTransaction { + + // 添加Fragment + public abstract FragmentTransaction add(int containerViewId, Fragment fragment); + public abstract FragmentTransaction add(int containerViewId, Fragment fragment, String tag); + + // 替换Fragment + public abstract FragmentTransaction replace(int containerViewId, Fragment fragment); + public abstract FragmentTransaction replace(int containerViewId, Fragment fragment, String tag); + + // 移除Fragment + public abstract FragmentTransaction remove(Fragment fragment); + + // 显示/隐藏Fragment + public abstract FragmentTransaction show(Fragment fragment); + public abstract FragmentTransaction hide(Fragment fragment); + + // 添加到回退栈 + public abstract FragmentTransaction addToBackStack(String name); + + // 提交事务 + public abstract int commit(); + public abstract int commitAllowingStateLoss(); + public abstract void commitNow(); + public abstract void commitNowAllowingStateLoss(); + + // 设置动画 + public abstract FragmentTransaction setCustomAnimations(int enter, int exit); + public abstract FragmentTransaction setCustomAnimations(int enter, int exit, + int popEnter, int popExit); +} +``` + +#### Fragment与Activity通信 + +```java +// 获取Activity +public final Activity getActivity(); +public final Context getContext(); + +// 获取父Fragment +public final Fragment getParentFragment(); + +// 获取FragmentManager +public final FragmentManager getFragmentManager(); // 已废弃 +public final FragmentManager getParentFragmentManager(); +public final FragmentManager getChildFragmentManager(); + +// 设置参数 +public void setArguments(Bundle args); +public Bundle getArguments(); + +// 获取目标Fragment(用于结果回调) +public Fragment getTargetFragment(); +public int getTargetRequestCode(); +public void setTargetFragment(Fragment fragment, int requestCode); +``` + +#### Fragment结果API + +```java +// 设置结果 +public void setResult(int resultCode); +public void setResult(int resultCode, Bundle result); + +// 获取结果 +public Bundle getResult(); +public int getResultCode(); + +// 结果回调 +public interface OnBackPressedDispatcherOwner { + OnBackPressedDispatcher getOnBackPressedDispatcher(); +} +``` + +### 最佳实践示例 + +```java +// 创建Fragment +public class MyFragment extends Fragment { + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + return inflater.inflate(R.layout.fragment_my, container, false); + } + + @Override + public void onViewCreated(View view, Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + // 初始化视图 + } +} + +// 使用Fragment +FragmentManager fm = getSupportFragmentManager(); +FragmentTransaction transaction = fm.beginTransaction(); +transaction.replace(R.id.container, new MyFragment()); +transaction.addToBackStack(null); +transaction.commit(); +``` + +### 相关API链接 + +- [Fragment官方文档](https://developer.android.com/reference/androidx/fragment/app/Fragment) +- [Fragment指南](https://developer.android.com/guide/fragments) +- [FragmentManager文档](https://developer.android.com/reference/androidx/fragment/app/FragmentManager) + +--- + +## Intent API + +Intent是Android应用的意图组件,用于组件间通信和启动。以下是Intent的核心API参考。 + +### 核心类和方法 + +#### Intent构造 + +```java +public class Intent implements Parcelable, Cloneable { + + // 构造方法 + public Intent(); + public Intent(Intent o); + public Intent(String action); + public Intent(String action, Uri uri); + public Intent(Context packageContext, Class cls); + public Intent(String action, Uri uri, Context packageContext, Class cls); + + // 创建Intent + public static Intent createChooser(Intent target, CharSequence title); +} +``` + +#### 组件设置 + +```java +// 设置组件 +public Intent setComponent(ComponentName component); +public Intent setClass(Context packageContext, Class cls); +public Intent setClassName(Context packageContext, String className); +public Intent setClassName(String packageName, String className); + +// 获取组件 +public ComponentName getComponent(); +public String getPackage(); +public Intent setPackage(String packageName); +``` + +#### Action和Category + +```java +// 设置Action +public Intent setAction(String action); +public String getAction(); + +// 添加Category +public Intent addCategory(String category); +public void removeCategory(String category); +public boolean hasCategory(String category); +public Set getCategories(); + +// 常用Action +public static final String ACTION_VIEW = "android.intent.action.VIEW"; +public static final String ACTION_SEND = "android.intent.action.SEND"; +public static final String ACTION_EDIT = "android.intent.action.EDIT"; +public static final String ACTION_DIAL = "android.intent.action.DIAL"; +public static final String ACTION_CALL = "android.intent.action.CALL"; +public static final String ACTION_PICK = "android.intent.action.PICK"; +public static final String ACTION_GET_CONTENT = "android.intent.action.GET_CONTENT"; + +// 常用Category +public static final String CATEGORY_DEFAULT = "android.intent.category.DEFAULT"; +public static final String CATEGORY_LAUNCHER = "android.intent.category.LAUNCHER"; +public static final String CATEGORY_BROWSABLE = "android.intent.category.BROWSABLE"; +``` + +#### Data和Type + +```java +// 设置Data +public Intent setData(Uri data); +public Intent setDataAndType(Uri data, String type); +public Uri getData(); + +// 设置Type +public Intent setType(String type); +public String getType(); +public Intent setTypeAndNormalize(String type); + +// 添加Data +public Intent addCategory(String category); +``` + +#### Extra数据 + +```java +// 添加Extra +public Intent putExtra(String name, String value); +public Intent putExtra(String name, int value); +public Intent putExtra(String name, long value); +public Intent putExtra(String name, boolean value); +public Intent putExtra(String name, float value); +public Intent putExtra(String name, double value); +public Intent putExtra(String name, byte[] value); +public Intent putExtra(String name, Parcelable value); +public Intent putExtra(String name, Serializable value); +public Intent putExtras(Intent src); +public Intent putExtras(Bundle extras); + +// 获取Extra +public boolean hasExtra(String name); +public Object getExtra(String name); +public String getStringExtra(String name); +public int getIntExtra(String name, int defaultValue); +public long getLongExtra(String name, long defaultValue); +public boolean getBooleanExtra(String name, boolean defaultValue); +public float getFloatExtra(String name, float defaultValue); +public double getDoubleExtra(String name, double defaultValue); +public byte[] getByteArrayExtra(String name); +public T getParcelableExtra(String name); +public Serializable getSerializableExtra(String name); +public Bundle getExtras(); +``` + +#### Flags + +```java +// 设置Flags +public Intent setFlags(int flags); +public Intent addFlags(int flags); +public int getFlags(); + +// 常用Flags +public static final int FLAG_ACTIVITY_NEW_TASK = 0x10000000; +public static final int FLAG_ACTIVITY_CLEAR_TOP = 0x04000000; +public static final int FLAG_ACTIVITY_SINGLE_TOP = 0x20000000; +public static final int FLAG_ACTIVITY_CLEAR_TASK = 0x00008000; +public static final int FLAG_ACTIVITY_NO_HISTORY = 0x40000000; +public static final int FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS = 0x00800000; +public static final int FLAG_GRANT_READ_URI_PERMISSION = 0x00000001; +public static final int FLAG_GRANT_WRITE_URI_PERMISSION = 0x00000002; +``` + +#### Intent解析 + +```java +// 解析Intent +public static Intent parseUri(String uri, int flags); +public String toUri(int flags); +public String toString(); + +// 匹配Intent +public boolean filterEquals(Intent other); +public int filterHashCode(); +``` + +### 最佳实践示例 + +```java +// 显式Intent +Intent intent = new Intent(this, MainActivity.class); +intent.putExtra("key", "value"); +startActivity(intent); + +// 隐式Intent +Intent intent = new Intent(Intent.ACTION_VIEW); +intent.setData(Uri.parse("https://www.example.com")); +startActivity(intent); + +// 分享Intent +Intent shareIntent = new Intent(Intent.ACTION_SEND); +shareIntent.setType("text/plain"); +shareIntent.putExtra(Intent.EXTRA_TEXT, "分享内容"); +startActivity(Intent.createChooser(shareIntent, "选择分享方式")); +``` + +### 相关API链接 + +- [Intent官方文档](https://developer.android.com/reference/android/content/Intent) +- [Intent和Intent过滤器指南](https://developer.android.com/guide/components/intents-filters) +- [常见Intent操作](https://developer.android.com/guide/components/intents-common) diff --git a/docs/GoogleAndroid开发文档体系/API参考/系统API.md b/docs/GoogleAndroid开发文档体系/API参考/系统API.md new file mode 100644 index 0000000..294e48d --- /dev/null +++ b/docs/GoogleAndroid开发文档体系/API参考/系统API.md @@ -0,0 +1,8 @@ +# 系统API + +## 待补充内容 + +- 系统服务API +- 系统权限API +- 系统功能API +- 系统版本API diff --git a/docs/GoogleAndroid开发文档体系/README.md b/docs/GoogleAndroid开发文档体系/README.md new file mode 100644 index 0000000..68f4967 --- /dev/null +++ b/docs/GoogleAndroid开发文档体系/README.md @@ -0,0 +1,84 @@ +# Google Android 开发文档体系 + +## 目录结构 + +- [入门指南](#入门指南) +- [核心主题](#核心主题) +- [最佳实践](#最佳实践) +- [API参考](#api参考) +- [工具和资源](#工具和资源) +- [示例代码](#示例代码) +- [视频和教程](#视频和教程) + +--- + +## 入门指南 + +- [Android开发入门](入门指南/Android开发入门.md) +- [开发环境搭建](入门指南/开发环境搭建.md) +- [第一个Android应用](入门指南/第一个Android应用.md) +- [Android Studio使用指南](入门指南/Android_Studio使用指南.md) + +--- + +## 核心主题 + +- [应用基础](核心主题/应用基础.md) +- [用户界面](核心主题/用户界面.md) +- [数据存储](核心主题/数据存储.md) +- [后台任务](核心主题/后台任务.md) +- [应用架构](核心主题/应用架构.md) +- [Jetpack组件](核心主题/Jetpack组件.md) +- [Material Design](核心主题/Material_Design.md) +- [性能优化](核心主题/性能优化.md) +- [安全与隐私](核心主题/安全与隐私.md) +- [测试](核心主题/测试.md) + +--- + +## 最佳实践 + +- [应用架构最佳实践](最佳实践/应用架构最佳实践.md) +- [性能优化最佳实践](最佳实践/性能优化最佳实践.md) +- [安全最佳实践](最佳实践/安全最佳实践.md) +- [用户体验最佳实践](最佳实践/用户体验最佳实践.md) +- [代码质量最佳实践](最佳实践/代码质量最佳实践.md) + +--- + +## API参考 + +- [Android API概览](API参考/Android_API概览.md) +- [核心API](API参考/核心API.md) +- [Jetpack API](API参考/Jetpack_API.md) +- [系统API](API参考/系统API.md) + +--- + +## 工具和资源 + +- [Android Studio](工具和资源/Android_Studio.md) +- [构建系统](工具和资源/构建系统.md) +- [调试工具](工具和资源/调试工具.md) +- [性能分析工具](工具和资源/性能分析工具.md) +- [官方资源链接](工具和资源/官方资源链接.md) + +--- + +## 示例代码 + +- [官方示例项目](示例代码/官方示例项目.md) +- [代码片段](示例代码/代码片段.md) +- [架构示例](示例代码/架构示例.md) + +--- + +## 视频和教程 + +- [官方视频教程](视频和教程/官方视频教程.md) +- [在线课程](视频和教程/在线课程.md) +- [技术会议](视频和教程/技术会议.md) + +--- + +*最后更新:2024年* diff --git a/docs/GoogleAndroid开发文档体系/入门指南/Android_Studio使用指南.md b/docs/GoogleAndroid开发文档体系/入门指南/Android_Studio使用指南.md new file mode 100644 index 0000000..06be3de --- /dev/null +++ b/docs/GoogleAndroid开发文档体系/入门指南/Android_Studio使用指南.md @@ -0,0 +1,426 @@ +# Android Studio使用指南 + +## 目录 +- [Android Studio界面介绍](#android-studio界面介绍) +- [项目创建和管理](#项目创建和管理) +- [代码编辑技巧](#代码编辑技巧) +- [调试功能](#调试功能) +- [版本控制集成](#版本控制集成) +- [插件推荐](#插件推荐) +- [常用快捷键](#常用快捷键) +- [常见问题](#常见问题) + +--- + +## Android Studio界面介绍 + +### 主界面布局 + +``` +┌─────────────────────────────────────────┐ +│ 菜单栏 (Menu Bar) │ +├─────────────────────────────────────────┤ +│ 工具栏 (Toolbar) │ +├──────────┬──────────────────────────────┤ +│ │ │ +│ 项目视图 │ 编辑器 (Editor) │ +│ (Project)│ │ +│ │ │ +│ │ │ +├──────────┴──────────────────────────────┤ +│ 状态栏 (Status Bar) │ +└─────────────────────────────────────────┘ +``` + +### 主要窗口 + +```java +// 1. 项目视图(Project) +// - 显示项目文件结构 +// - 可以切换不同视图(Project、Android、Packages等) + +// 2. 编辑器(Editor) +// - 代码编辑区域 +// - 支持多标签页 +// - 代码高亮和自动补全 + +// 3. 工具窗口(Tool Windows) +// - Logcat:日志输出 +// - Build:构建输出 +// - Terminal:终端 +// - TODO:待办事项 +// - Structure:代码结构 + +// 4. 状态栏(Status Bar) +// - 显示项目状态 +// - 显示同步状态 +// - 显示构建状态 +``` + +--- + +## 项目创建和管理 + +### 创建新项目 + +```java +// 1. File → New → New Project +// 2. 选择项目模板 +// 3. 配置项目信息 +// 4. 选择最低 SDK 版本 +// 5. 选择语言(Java/Kotlin) +// 6. 完成创建 +``` + +### 打开现有项目 + +```java +// 1. File → Open +// 2. 选择项目目录 +// 3. 等待 Gradle 同步 +``` + +### 项目结构视图 + +```java +// 切换视图: +// - Project:完整文件结构 +// - Android:Android 项目视图(推荐) +// - Packages:包视图 +// - Project Files:项目文件视图 +``` + +### 项目设置 + +```java +// File → Settings(Windows/Linux) +// 或 Android Studio → Preferences(macOS) + +// 主要设置: +// - Appearance & Behavior:外观和行为 +// - Editor:编辑器设置 +// - Build, Execution, Deployment:构建设置 +// - Tools:工具设置 +``` + +--- + +## 代码编辑技巧 + +### 代码自动补全 + +```java +// 1. 基本补全:Ctrl + Space(Windows/Linux) +// Command + Space(macOS) + +// 2. 智能补全:Ctrl + Shift + Space +// Command + Shift + Space + +// 3. 语句补全:Ctrl + Shift + Enter +// Command + Shift + Enter +``` + +### 代码生成 + +```java +// 1. 生成代码:Alt + Insert(Windows/Linux) +// Command + N(macOS) + +// 可以生成: +// - Getter/Setter +// - Constructor +// - toString() +// - equals()/hashCode() +// - Override 方法 +``` + +### 代码重构 + +```java +// 1. 重命名:Shift + F6 +// 2. 提取方法:Ctrl + Alt + M +// 3. 提取变量:Ctrl + Alt + V +// 4. 提取常量:Ctrl + Alt + C +// 5. 内联:Ctrl + Alt + N +``` + +### 代码导航 + +```java +// 1. 跳转到定义:Ctrl + B 或 Ctrl + 点击 +// 2. 跳转到声明:Ctrl + Alt + B +// 3. 查找用法:Alt + F7 +// 4. 显示用法:Ctrl + Alt + F7 +// 5. 最近文件:Ctrl + E +// 6. 最近位置:Ctrl + Shift + E +``` + +### 代码格式化 + +```java +// 1. 格式化代码:Ctrl + Alt + L(Windows/Linux) +// Command + Option + L(macOS) + +// 2. 优化导入:Ctrl + Alt + O +// Command + Option + O + +// 3. 自动缩进:Ctrl + Alt + I +``` + +--- + +## 调试功能 + +### 设置断点 + +```java +// 1. 在代码行号左侧点击设置断点 +// 2. 或使用 Ctrl + F8(Windows/Linux) +// Command + F8(macOS) + +// 断点类型: +// - 行断点:普通断点 +// - 条件断点:满足条件时暂停 +// - 日志断点:输出日志,不暂停 +``` + +### 调试操作 + +```java +// 1. 开始调试:Shift + F9 +// 2. 继续执行:F9 +// 3. 单步跳过:F8 +// 4. 单步进入:F7 +// 5. 单步跳出:Shift + F8 +// 6. 停止调试:Ctrl + F2 +``` + +### 调试窗口 + +```java +// 调试时显示: +// - Variables:变量值 +// - Watches:监视表达式 +// - Frames:调用栈 +// - Console:控制台输出 +``` + +### Logcat + +```java +// 1. 查看日志:View → Tool Windows → Logcat +// 2. 过滤日志:使用过滤器 +// 3. 搜索日志:Ctrl + F +// 4. 清除日志:点击清除按钮 + +// 日志级别: +// - Verbose (V) +// - Debug (D) +// - Info (I) +// - Warn (W) +// - Error (E) +``` + +--- + +## 版本控制集成 + +### Git集成 + +```java +// 1. 启用 Git:VCS → Enable Version Control Integration +// 2. 选择 Git + +// 3. 初始化仓库:VCS → Import into Version Control → Create Git Repository +``` + +### 常用Git操作 + +```java +// 1. 提交更改:Ctrl + K(Windows/Linux) +// Command + K(macOS) + +// 2. 推送更改:Ctrl + Shift + K +// Command + Shift + K + +// 3. 更新项目:Ctrl + T +// Command + T + +// 4. 查看历史:Alt + 9 +// Command + 9 + +// 5. 查看差异:Ctrl + D +``` + +### Git工具窗口 + +```java +// View → Tool Windows → Git +// 显示: +// - 本地更改 +// - 提交历史 +// - 分支 +// - 远程仓库 +``` + +--- + +## 插件推荐 + +### 必备插件 + +```java +// 1. ADB Idea +// - 快速执行 ADB 命令 +// - 卸载应用、清除数据等 + +// 2. Android Drawable Importer +// - 批量导入图片资源 +// - 自动生成不同密度图片 + +// 3. GsonFormat +// - JSON 转 Java Bean +// - 快速生成实体类 + +// 4. CodeGlance +// - 代码缩略图 +// - 快速导航 + +// 5. Rainbow Brackets +// - 彩色括号匹配 +// - 提高代码可读性 +``` + +### 安装插件 + +```java +// 1. File → Settings → Plugins +// 2. 搜索插件名称 +// 3. 点击 Install +// 4. 重启 Android Studio +``` + +--- + +## 常用快捷键 + +### 编辑快捷键 + +```java +// Windows/Linux: +// - Ctrl + Space:代码补全 +// - Ctrl + Shift + Space:智能补全 +// - Ctrl + Alt + L:格式化代码 +// - Ctrl + D:复制当前行 +// - Ctrl + Y:删除当前行 +// - Ctrl + /:注释/取消注释 +// - Ctrl + Shift + /:块注释 +// - Ctrl + W:扩展选择 +// - Ctrl + Shift + W:收缩选择 + +// macOS: +// - Command + Space:代码补全 +// - Command + Shift + Space:智能补全 +// - Command + Option + L:格式化代码 +// - Command + D:复制当前行 +// - Command + Delete:删除当前行 +// - Command + /:注释/取消注释 +``` + +### 导航快捷键 + +```java +// Windows/Linux: +// - Ctrl + B:跳转到定义 +// - Ctrl + Alt + B:跳转到实现 +// - Alt + F7:查找用法 +// - Ctrl + E:最近文件 +// - Ctrl + N:查找类 +// - Ctrl + Shift + N:查找文件 +// - Ctrl + F12:查找方法 + +// macOS: +// - Command + B:跳转到定义 +// - Command + Option + B:跳转到实现 +// - Option + F7:查找用法 +// - Command + E:最近文件 +// - Command + O:查找类 +// - Command + Shift + O:查找文件 +``` + +### 运行和调试 + +```java +// Windows/Linux: +// - Shift + F10:运行 +// - Shift + F9:调试 +// - Ctrl + F2:停止 +// - F9:继续 +// - F8:单步跳过 +// - F7:单步进入 + +// macOS: +// - Control + R:运行 +// - Control + D:调试 +// - Command + F2:停止 +// - F9:继续 +// - F8:单步跳过 +// - F7:单步进入 +``` + +--- + +## 常见问题 + +### 问题1:Android Studio卡顿 + +```java +// 解决方案: +// 1. 增加内存分配 +// Help → Edit Custom VM Options +// -Xmx2048m(增加到 2048MB 或更多) + +// 2. 禁用不必要的插件 +// 3. 关闭不必要的工具窗口 +// 4. 使用 SSD 硬盘 +``` + +### 问题2:代码补全不工作 + +```java +// 解决方案: +// 1. File → Invalidate Caches / Restart +// 2. File → Settings → Editor → General → Code Completion +// 检查设置 +// 3. 重新索引:File → Invalidate Caches +``` + +### 问题3:Gradle同步慢 + +```java +// 解决方案: +// 1. 使用国内镜像源 +// 2. 配置 Gradle 代理 +// 3. 使用本地 Gradle 版本 +// 4. 清理 Gradle 缓存 +``` + +### 问题4:模拟器无法启动 + +```java +// 解决方案: +// 1. 检查 HAXM 是否安装(Windows/macOS) +// 2. 检查 BIOS 虚拟化是否启用 +// 3. 尝试冷启动:emulator -avd -no-snapshot-load +// 4. 删除并重新创建 AVD +``` + +--- + +## 总结 + +Android Studio 是功能强大的 IDE,熟练掌握其功能可以大大提高开发效率。建议多实践,逐步掌握各种功能和快捷键。 + +--- + +*最后更新:2024年* diff --git a/docs/GoogleAndroid开发文档体系/入门指南/Android开发入门.md b/docs/GoogleAndroid开发文档体系/入门指南/Android开发入门.md new file mode 100644 index 0000000..17fec64 --- /dev/null +++ b/docs/GoogleAndroid开发文档体系/入门指南/Android开发入门.md @@ -0,0 +1,232 @@ +# Android开发入门 + +## 目录 +- [Android开发概述](#android开发概述) +- [Android平台特性](#android平台特性) +- [开发环境要求](#开发环境要求) +- [学习路径](#学习路径) +- [资源推荐](#资源推荐) + +--- + +## Android开发概述 + +### 什么是Android? + +```java +// Android 是一个基于 Linux 的开源移动操作系统 +// 由 Google 主导开发 +// 主要用于智能手机、平板电脑等移动设备 +``` + +### Android开发 + +```java +// Android 开发是指使用 Java 或 Kotlin 语言 +// 在 Android 平台上开发移动应用 +// 使用 Android SDK 和 Android Studio 工具 +``` + +### 为什么选择Android开发? + +```java +// 1. 市场份额大:Android 占据全球移动操作系统大部分市场份额 +// 2. 开源开放:Android 是开源的,开发者可以自由开发 +// 3. 开发工具完善:Android Studio 功能强大 +// 4. 生态系统丰富:Jetpack、Material Design 等 +// 5. 就业机会多:市场需求大 +``` + +--- + +## Android平台特性 + +### 核心特性 + +```java +// 1. 应用组件 +// - Activity:用户界面 +// - Service:后台服务 +// - BroadcastReceiver:广播接收器 +// - ContentProvider:数据共享 + +// 2. 资源管理 +// - 支持多屏幕尺寸 +// - 支持多语言 +// - 支持不同设备配置 + +// 3. 权限系统 +// - 细粒度权限控制 +// - 运行时权限申请 + +// 4. 后台任务 +// - WorkManager +// - JobScheduler +// - 前台服务 +``` + +### Android版本 + +```java +// Android 版本历史: +// - Android 1.0 (2008) +// - Android 4.0 Ice Cream Sandwich (2011) +// - Android 5.0 Lollipop (2014) - Material Design +// - Android 6.0 Marshmallow (2015) - 运行时权限 +// - Android 8.0 Oreo (2017) - 通知渠道 +// - Android 10 (2019) - 分区存储 +// - Android 11 (2020) - 包可见性 +// - Android 12 (2021) - Material You +// - Android 13 (2022) - 通知权限 +// - Android 14 (2023) - 部分媒体访问 +``` + +--- + +## 开发环境要求 + +### 系统要求 + +```java +// Windows: +// - Windows 7/8/10/11 (64位) +// - 至少 8GB RAM(推荐 16GB) +// - 至少 8GB 可用磁盘空间 + +// macOS: +// - macOS 10.14 或更高版本 +// - 至少 8GB RAM(推荐 16GB) +// - 至少 8GB 可用磁盘空间 + +// Linux: +// - Ubuntu 18.04 或更高版本 +// - 至少 8GB RAM(推荐 16GB) +// - 至少 8GB 可用磁盘空间 +``` + +### 必需软件 + +```java +// 1. JDK (Java Development Kit) +// - JDK 8 或更高版本 +// - 推荐 JDK 11 或 JDK 17 + +// 2. Android Studio +// - 官方推荐的 IDE +// - 包含 Android SDK + +// 3. Android SDK +// - 包含开发工具和 API +// - 通过 Android Studio 安装 +``` + +--- + +## 学习路径 + +### 初学者路径 + +```java +// 阶段1:基础入门(1-2周) +// 1. 安装开发环境 +// 2. 了解 Android 基础概念 +// 3. 创建第一个应用 +// 4. 学习 Activity 和布局 + +// 阶段2:核心组件(2-3周) +// 1. Activity 生命周期 +// 2. Fragment 使用 +// 3. Service 和 BroadcastReceiver +// 4. Intent 和 IntentFilter + +// 阶段3:UI开发(2-3周) +// 1. 布局和 View +// 2. Material Design +// 3. RecyclerView +// 4. 自定义 View + +// 阶段4:数据存储(1-2周) +// 1. SharedPreferences +// 2. SQLite 和 Room +// 3. 文件存储 + +// 阶段5:网络编程(1-2周) +// 1. HTTP 请求 +// 2. Retrofit +// 3. 图片加载 + +// 阶段6:进阶主题(持续学习) +// 1. 架构设计 +// 2. 性能优化 +// 3. 测试 +// 4. 发布应用 +``` + +### 推荐学习顺序 + +```java +// 1. Android 基础 → 2. UI 开发 → 3. 数据存储 +// → 4. 网络编程 → 5. 架构设计 → 6. 性能优化 +``` + +--- + +## 资源推荐 + +### 官方资源 + +```java +// 1. Android 开发者官网 +// https://developer.android.com/ +// - 完整文档 +// - API 参考 +// - 代码示例 + +// 2. Android 官方博客 +// https://android-developers.googleblog.com/ +// - 最新动态 +// - 技术更新 + +// 3. Android 官方 YouTube +// https://www.youtube.com/user/androiddevelopers +// - 视频教程 +// - 技术会议 + +// 4. Android 源码 +// https://source.android.com/ +// - AOSP 源码 +// - 系统架构文档 +``` + +### 学习资源 + +```java +// 1. Android 官方培训课程 +// - Android Basics in Kotlin +// - Android Kotlin Fundamentals + +// 2. 在线课程平台 +// - Udacity +// - Coursera +// - edX + +// 3. 书籍推荐 +// - 《第一行代码 Android》 +// - 《Android 编程权威指南》 +// - 《Android 开发艺术探索》 + +// 4. 社区 +// - Stack Overflow +// - Reddit r/androiddev +// - 掘金 Android 专栏 +``` + +--- + +## 总结 + +Android 开发是一个持续学习的过程。建议从基础开始,逐步深入学习,多实践,多参考官方文档和最佳实践。 + +--- + +*最后更新:2024年* diff --git a/docs/GoogleAndroid开发文档体系/入门指南/开发环境搭建.md b/docs/GoogleAndroid开发文档体系/入门指南/开发环境搭建.md new file mode 100644 index 0000000..839a47d --- /dev/null +++ b/docs/GoogleAndroid开发文档体系/入门指南/开发环境搭建.md @@ -0,0 +1,393 @@ +# 开发环境搭建 + +## 目录 +- [JDK安装配置](#jdk安装配置) +- [Android Studio安装](#android-studio安装) +- [SDK配置](#sdk配置) +- [模拟器配置](#模拟器配置) +- [真机调试配置](#真机调试配置) +- [环境变量设置](#环境变量设置) +- [常见问题](#常见问题) + +--- + +## JDK安装配置 + +### JDK版本选择 + +```java +// 推荐版本: +// - JDK 11(LTS,长期支持) +// - JDK 17(LTS,最新长期支持) +// - JDK 8(兼容性好,但较旧) + +// Android Studio 内置 JDK,也可以使用系统 JDK +``` + +### Windows安装JDK + +```bash +# 1. 下载 JDK +# 访问 Oracle 官网或 OpenJDK 下载 + +# 2. 安装 JDK +# 运行安装程序,按提示安装 + +# 3. 配置环境变量 +# 系统属性 → 高级 → 环境变量 +# 新建 JAVA_HOME = C:\Program Files\Java\jdk-11 +# 编辑 Path,添加 %JAVA_HOME%\bin + +# 4. 验证安装 +java -version +javac -version +``` + +### macOS安装JDK + +```bash +# 方式1:使用 Homebrew +brew install openjdk@11 + +# 方式2:下载安装包 +# 从官网下载 .dmg 文件安装 + +# 配置环境变量(~/.zshrc 或 ~/.bash_profile) +export JAVA_HOME=$(/usr/libexec/java_home -v 11) +export PATH=$JAVA_HOME/bin:$PATH + +# 验证 +java -version +``` + +### Linux安装JDK + +```bash +# Ubuntu/Debian +sudo apt update +sudo apt install openjdk-11-jdk + +# 配置环境变量(~/.bashrc) +export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 +export PATH=$JAVA_HOME/bin:$PATH + +# 验证 +java -version +``` + +--- + +## Android Studio安装 + +### 下载Android Studio + +```java +// 1. 访问官网 +// https://developer.android.com/studio + +// 2. 下载安装包 +// - Windows: .exe 安装程序 +// - macOS: .dmg 磁盘映像 +// - Linux: .tar.gz 压缩包 +``` + +### Windows安装 + +```bash +# 1. 运行安装程序 +# android-studio-xxxx.exe + +# 2. 选择安装组件 +# - Android Studio +# - Android SDK +# - Android Virtual Device +# - Performance (Intel HAXM) + +# 3. 选择安装路径 +# 建议:C:\Program Files\Android\Android Studio + +# 4. 完成安装 +``` + +### macOS安装 + +```bash +# 1. 打开 .dmg 文件 +# 2. 拖拽 Android Studio 到 Applications +# 3. 首次启动,完成设置向导 +``` + +### Linux安装 + +```bash +# 1. 解压文件 +tar -xzf android-studio-*.tar.gz + +# 2. 移动到合适位置 +sudo mv android-studio /opt/ + +# 3. 创建启动脚本 +# /opt/android-studio/bin/studio.sh +``` + +### 首次启动配置 + +```java +// 1. 欢迎界面 +// - 选择 Standard 安装类型(推荐) + +// 2. SDK 组件安装 +// - Android SDK +// - Android SDK Platform +// - Android Virtual Device + +// 3. 许可协议 +// - 接受所有许可协议 + +// 4. 完成设置 +``` + +--- + +## SDK配置 + +### SDK Manager + +```java +// 打开 SDK Manager +// File → Settings → Appearance & Behavior → System Settings → Android SDK + +// 或 +// Tools → SDK Manager +``` + +### 必需组件 + +```java +// 1. Android SDK Platform +// - 选择目标 API 级别(推荐 API 33+) +// - 至少安装一个最新版本 + +// 2. Android SDK Build-Tools +// - 最新版本 +// - 用于编译应用 + +// 3. Android SDK Platform-Tools +// - ADB 工具 +// - Fastboot 工具 + +// 4. Android SDK Tools +// - 开发工具 + +// 5. Android Emulator +// - 模拟器 + +// 6. Intel x86 Emulator Accelerator (HAXM) +// - Windows/macOS 模拟器加速 +``` + +### SDK路径配置 + +```java +// Windows 默认路径: +// C:\Users\<用户名>\AppData\Local\Android\Sdk + +// macOS 默认路径: +// ~/Library/Android/sdk + +// Linux 默认路径: +// ~/Android/Sdk +``` + +--- + +## 模拟器配置 + +### 创建虚拟设备 + +```java +// 1. 打开 AVD Manager +// Tools → Device Manager + +// 2. 创建虚拟设备 +// Create Device + +// 3. 选择设备定义 +// - Pixel 5(推荐) +// - Pixel 6 +// - 其他设备 + +// 4. 选择系统镜像 +// - 推荐:最新稳定版(API 33+) +// - 下载系统镜像(如需要) + +// 5. 配置虚拟设备 +// - AVD Name:设备名称 +// - Graphics:硬件加速(推荐) +// - Show Advanced Settings:高级设置 +``` + +### 模拟器设置 + +```java +// 性能设置: +// - Graphics: Hardware - GLES 2.0(推荐) +// - RAM: 2048 MB(推荐) +// - VM heap: 512 MB + +// 存储设置: +// - Internal Storage: 2048 MB +// - SD Card: 可选 + +// 网络设置: +// - 默认使用主机网络 +``` + +### 启动模拟器 + +```java +// 1. 从 AVD Manager 启动 +// 2. 或从 Android Studio 运行应用时自动启动 +// 3. 或使用命令行: +emulator -avd +``` + +--- + +## 真机调试配置 + +### 启用开发者选项 + +```java +// 1. 打开设置 +// 2. 关于手机 +// 3. 连续点击"版本号"7次 +// 4. 返回设置,找到"开发者选项" +``` + +### 启用USB调试 + +```java +// 1. 打开开发者选项 +// 2. 启用"USB调试" +// 3. 连接手机到电脑 +// 4. 手机上确认 USB 调试授权 +``` + +### 验证连接 + +```bash +# 使用 ADB 验证 +adb devices + +# 应该显示设备列表 +# List of devices attached +# <设备ID> device +``` + +### 常见问题 + +```java +// 1. 设备未识别 +// - 检查 USB 驱动(Windows) +// - 检查 USB 连接模式(文件传输模式) +// - 重新插拔 USB + +// 2. 授权问题 +// - 手机上撤销 USB 调试授权 +// - 重新连接并授权 + +// 3. 驱动问题(Windows) +// - 安装手机厂商 USB 驱动 +// - 或使用通用 Android USB 驱动 +``` + +--- + +## 环境变量设置 + +### Windows环境变量 + +```bash +# 1. 设置 ANDROID_HOME +# 系统属性 → 高级 → 环境变量 +# 新建 ANDROID_HOME = C:\Users\<用户名>\AppData\Local\Android\Sdk + +# 2. 添加到 Path +# %ANDROID_HOME%\platform-tools +# %ANDROID_HOME%\tools +# %ANDROID_HOME%\tools\bin + +# 3. 验证 +adb version +``` + +### macOS/Linux环境变量 + +```bash +# 编辑 ~/.zshrc 或 ~/.bash_profile +export ANDROID_HOME=$HOME/Library/Android/sdk +export PATH=$PATH:$ANDROID_HOME/platform-tools +export PATH=$PATH:$ANDROID_HOME/tools +export PATH=$PATH:$ANDROID_HOME/tools/bin + +# 使配置生效 +source ~/.zshrc # 或 source ~/.bash_profile + +# 验证 +adb version +``` + +--- + +## 常见问题 + +### 问题1:SDK下载失败 + +```java +// 解决方案: +// 1. 检查网络连接 +// 2. 使用代理或 VPN +// 3. 手动下载 SDK 组件 +// 4. 配置 SDK Manager 代理 +``` + +### 问题2:模拟器启动慢 + +```java +// 解决方案: +// 1. 启用硬件加速(HAXM) +// 2. 增加 RAM 分配 +// 3. 使用 x86 系统镜像 +// 4. 关闭不必要的后台程序 +``` + +### 问题3:Gradle同步失败 + +```java +// 解决方案: +// 1. 检查网络连接 +// 2. 配置 Gradle 代理 +// 3. 清理项目:Build → Clean Project +// 4. 重新同步:File → Sync Project with Gradle Files +``` + +### 问题4:ADB未识别设备 + +```java +// 解决方案: +// 1. 检查 USB 驱动(Windows) +// 2. 重启 ADB:adb kill-server && adb start-server +// 3. 检查 USB 调试是否启用 +// 4. 尝试不同的 USB 端口 +``` + +--- + +## 总结 + +开发环境搭建是 Android 开发的第一步。确保正确安装和配置所有必需组件,可以大大提高开发效率。 + +--- + +*最后更新:2024年* diff --git a/docs/GoogleAndroid开发文档体系/入门指南/第一个Android应用.md b/docs/GoogleAndroid开发文档体系/入门指南/第一个Android应用.md new file mode 100644 index 0000000..d3c62b6 --- /dev/null +++ b/docs/GoogleAndroid开发文档体系/入门指南/第一个Android应用.md @@ -0,0 +1,330 @@ +# 第一个Android应用 + +## 目录 +- [创建新项目](#创建新项目) +- [项目结构说明](#项目结构说明) +- [编写第一个Activity](#编写第一个activity) +- [运行应用](#运行应用) +- [常见问题](#常见问题) + +--- + +## 创建新项目 + +### 步骤1:启动Android Studio + +```java +// 1. 打开 Android Studio +// 2. 选择 "New Project" +// 3. 或 File → New → New Project +``` + +### 步骤2:选择项目模板 + +```java +// 推荐模板: +// - Empty Activity(空 Activity,适合初学者) +// - Basic Activity(基础 Activity,包含导航) +// - Bottom Navigation Activity(底部导航) +// - Navigation Drawer Activity(侧边栏导航) + +// 选择 "Empty Activity" → Next +``` + +### 步骤3:配置项目 + +```java +// 项目配置: +// - Name: MyFirstApp(项目名称) +// - Package name: com.example.myfirstapp(包名) +// - Save location: 选择保存路径 +// - Language: Java 或 Kotlin +// - Minimum SDK: API 21(Android 5.0) +// - Build configuration language: Gradle Kotlin DSL 或 Groovy + +// 点击 Finish +``` + +### 步骤4:等待项目创建 + +```java +// Android Studio 会自动: +// 1. 创建项目结构 +// 2. 下载依赖 +// 3. 同步 Gradle +// 4. 构建项目 + +// 首次创建可能需要几分钟 +``` + +--- + +## 项目结构说明 + +### 项目视图 + +``` +MyFirstApp/ +├── app/ # 应用模块 +│ ├── src/ +│ │ ├── main/ +│ │ │ ├── java/ # Java/Kotlin 源代码 +│ │ │ │ └── com/example/myfirstapp/ +│ │ │ │ └── MainActivity.java +│ │ │ ├── res/ # 资源文件 +│ │ │ │ ├── layout/ # 布局文件 +│ │ │ │ │ └── activity_main.xml +│ │ │ │ ├── values/ # 值资源 +│ │ │ │ │ ├── strings.xml +│ │ │ │ │ ├── colors.xml +│ │ │ │ │ └── themes.xml +│ │ │ │ └── mipmap/ # 应用图标 +│ │ │ └── AndroidManifest.xml # 应用清单 +│ │ └── test/ # 测试代码 +│ └── build.gradle # 模块构建配置 +├── gradle/ # Gradle 配置 +├── build.gradle # 项目构建配置 +└── settings.gradle # 项目设置 +``` + +### 关键文件说明 + +#### AndroidManifest.xml + +```xml + + + + + + + + + + + + +``` + +#### build.gradle (Module: app) + +```gradle +plugins { + id 'com.android.application' +} + +android { + namespace 'com.example.myfirstapp' + compileSdk 33 + + defaultConfig { + applicationId "com.example.myfirstapp" + minSdk 21 + targetSdk 33 + versionCode 1 + versionName "1.0" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + implementation 'androidx.appcompat:appcompat:1.6.1' + implementation 'com.google.android.material:material:1.9.0' + implementation 'androidx.constraintlayout:constraintlayout:2.1.4' +} +``` + +--- + +## 编写第一个Activity + +### MainActivity.java + +```java +package com.example.myfirstapp; + +import androidx.appcompat.app.AppCompatActivity; +import android.os.Bundle; +import android.widget.TextView; + +public class MainActivity extends AppCompatActivity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + // 获取 TextView + TextView textView = findViewById(R.id.textView); + textView.setText("Hello, Android!"); + } +} +``` + +### activity_main.xml + +```xml + + + + + + +``` + +### 添加按钮和点击事件 + +```java +// activity_main.xml 中添加按钮 +