课程导学与项目初始化
各位同学好,我是你们这门课的主讲人。今天咱们正式开始《Kotlin与Android现代网络层》的第一章。
说实话,我见过太多Android开发者在网络层这块踩坑了。有的人用AsyncTask做网络请求,有的人回调嵌套得跟千层饼似的。嗯,这些我都经历过。所以这门课,我想带大家走一条更现代、更优雅的路。
1.1 这门课到底要讲什么?
说白了,就是教你用Kotlin最时髦的那套东西,搭一个靠谱的网络层。
我个人习惯把网络层比作App的血管。数据流不通,界面再好看也没用。而我们要做的,就是用Retrofit做请求,用OkHttp做底层传输,用Coroutine管理异步,用Flow做数据流。
这四个东西组合在一起,效果怎么样?我这么跟你说吧——代码量减少一半,可读性提升两倍,bug数量直线下降。
课程核心目标:
- 掌握Retrofit + OkHttp的实战配置
- 理解Coroutine在网络层的正确用法
- 学会用Flow处理数据流和状态管理
- 搭建一个可直接用于生产环境的网络层框架
1.2 技术栈概览
先看看我们这30章要用到哪些东西。我列了个表,方便你对照着看。
| 组件 | 版本(推荐) | 作用 |
|---|---|---|
| Retrofit | 2.9.0+ | 声明式HTTP客户端 |
| OkHttp | 4.11.0+ | 底层网络通信 |
| Kotlin Coroutine | 1.7.0+ | 异步任务管理 |
| Kotlin Flow | 1.7.0+ | 响应式数据流 |
| Gson / Moshi | 2.10.1+ | JSON解析 |
你可能会问,为什么不用RxJava?我在项目中曾经也是RxJava的重度用户,但后来发现Coroutine + Flow的组合更轻量,学习曲线也更平缓。说白了,RxJava能做的,Flow基本都能做,而且写起来更符合Kotlin的直觉。
1.3 创建Android项目
好,咱们动手吧。打开Android Studio,创建一个新项目。
我个人建议选"Empty Activity"模板,别选那些带导航栏的模板——那些模板加了一堆你暂时不需要的东西,反而碍事。
项目名就叫 ModernNetworkLayer,包名用 com.example.modernnetwork。语言选Kotlin,最低SDK选API 21。嗯,这个版本覆盖了市面上95%以上的设备,够用了。
小技巧: 创建项目时勾选"Use legacy android.support libraries"?千万别勾。现在都用AndroidX了,这是2024年,不是2018年。
1.4 配置Gradle依赖
项目创建好了,接下来就是加依赖。这是整个课程的基础,我建议你仔细看,别漏了。
打开 app/build.gradle.kts(注意是.kts,不是.gradle),在dependencies块里加上这些:
// Retrofit
implementation("com.squareup.retrofit2:retrofit:2.9.0")
implementation("com.squareup.retrofit2:converter-gson:2.9.0")
// OkHttp
implementation("com.squareup.okhttp3:okhttp:4.11.0")
implementation("com.squareup.okhttp3:logging-interceptor:4.11.0")
// Coroutine
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3")
// Flow(Coroutine已经包含了,但如果你要用到StateFlow和SharedFlow)
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3")
// Lifecycle(用于ViewModel中的协程作用域)
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1")
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.1")
等一下,你可能注意到Flow没有单独的依赖。没错,Flow是Coroutine库的一部分。你只要引入了Coroutine,Flow就能用了。
注意: 版本号一定要统一。我曾经遇到过Retrofit 2.9.0配OkHttp 3.x的情况,结果运行时各种ClassNotFoundException。Retrofit 2.9.0要求OkHttp最低4.x,记住了。
加完依赖后,记得点一下"Sync Now"。如果同步失败,检查一下网络——有时候公司内网会屏蔽mavenCentral的请求。
1.5 知识体系总览
为了让你对整门课有个直观认识,我画了一张图。这张图展示了我们这30章要搭建的核心架构。
这张图你看懂了吗?数据从UI层发起请求,经过ViewModel的协程调度,到Repository层做数据决策——是走网络还是走本地缓存。网络层我们用Retrofit + OkHttp,本地层用Room或DataStore。整个链路都是异步的,不会阻塞主线程。
我在项目中就吃过亏——早期没加Repository层,ViewModel直接调Retrofit。结果后来要加缓存逻辑,改得我头皮发麻。所以从一开始就分层设计,后面会省很多事。
1.6 本章小结
好,第一章就到这。我们做了三件事:
- 明确了课程目标——搭建现代网络层
- 了解了技术栈——Retrofit + OkHttp + Coroutine + Flow
- 创建了项目并配好了依赖
你可能会觉得,配个依赖有什么好讲的?嗯,我理解。但相信我,依赖版本不对、库之间不兼容,这些问题在实际开发中太常见了。打好基础,后面才能跑得快。
下一章,我们会真正开始写代码——创建Retrofit实例,配置OkHttp客户端。到时候你会看到,这些东西组合在一起,写网络请求能有多爽。