课程导学与项目初始化

各位同学好,我是你们这门课的主讲人。今天咱们正式开始《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章要搭建的核心架构。

现代Android网络层架构 UI层(Activity / Fragment) ViewModel(Coroutine + Flow) Repository(数据仓库) 网络层(Retrofit + OkHttp) 本地层(Room / DataStore) 数据流方向:UI → ViewModel → Repository → 网络/本地

这张图你看懂了吗?数据从UI层发起请求,经过ViewModel的协程调度,到Repository层做数据决策——是走网络还是走本地缓存。网络层我们用Retrofit + OkHttp,本地层用Room或DataStore。整个链路都是异步的,不会阻塞主线程。

我在项目中就吃过亏——早期没加Repository层,ViewModel直接调Retrofit。结果后来要加缓存逻辑,改得我头皮发麻。所以从一开始就分层设计,后面会省很多事。

1.6 本章小结

好,第一章就到这。我们做了三件事:

  • 明确了课程目标——搭建现代网络层
  • 了解了技术栈——Retrofit + OkHttp + Coroutine + Flow
  • 创建了项目并配好了依赖

你可能会觉得,配个依赖有什么好讲的?嗯,我理解。但相信我,依赖版本不对、库之间不兼容,这些问题在实际开发中太常见了。打好基础,后面才能跑得快。

下一章,我们会真正开始写代码——创建Retrofit实例,配置OkHttp客户端。到时候你会看到,这些东西组合在一起,写网络请求能有多爽。


公众号:蓝海资料掘金营,微信deep3321