朱涛 · Kotlin 编程第一课
朱涛
Google 认证的 Kotlin、Android 开发者专家,博客“Kotlin Jetpack 实战”作者
6717 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 50 讲
朱涛 · Kotlin 编程第一课
15
15
1.0x
00:00/00:00
登录|注册

35 | 用Kotlin写一个GitHub Trending App

你好,我是朱涛。
这节课,我们一起来用 Kotlin 和 Jetpack 写一个简单的 Android 应用。为了便于理解,这个应用的功能会尽量简单,即使你对 Android 不是特别熟悉,跟着课程的引导,你也能轻松完成。

准备工作

在之前的课程中,我们的实战项目都是基于 JVM 的,并没有涉及过 Android 相关的配置。因此,如果你的电脑没有 Android 开发的环境的话,那么可能需要做一些额外的配置。当然,在你已有 Java 环境的前提下,想要配置 Android 开发环境并不麻烦,你可以去搜索一些相关的Android 开发环境配置的教程。
那么,要进行 Android 开发,我们可以使用 IntelliJ,也可以使用 Android Studio,后者针对 Android 开发做了很多定制化,也是免费的,这里我也建议你去下载 Android Studio。
当配置好所有的环境以后,我们就可以像创建 Kotlin 工程一样,来创建一个新的 Android 工程了。
然后,当你创建好工程以后,就可以尝试运行代码了,这时候你大概率会看到一个 Hello World 的初始界面。
接下来,我们就正式进入开发吧。

MVVM 架构

Android 应用的架构,在过去的这些年里一直都在变化。最开始的 Android 其实没有什么明确的架构,大家习惯于把所有代码都往 Activity 里放,直到后来才开始有了 MVC、MVP 以及 MVVM。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了使用Kotlin和Jetpack构建Android应用的全过程,重点讲解了MVVM和Clean架构的应用。通过实际代码演示,读者可以学习到如何在Android应用中应用这两种架构,并了解实体层、数据层、领域层和表现层的编写过程。文章还涵盖了ViewModel、LiveData、Activity、Fragment等组件的使用,以及RecyclerView的适配器逻辑。此外,还介绍了如何处理服务端返回的JSON字段为null的情况,并提供了解决方案。整体而言,本文通过实际案例向读者展示了MVVM和Clean架构的优点和缺点,对于想要学习Android开发的读者具有很好的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《朱涛 · Kotlin 编程第一课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(13)

  • 最新
  • 精选
  • 百里路海
    实体层中的密封类定义中,Loading为什么用 object 而不是 data class,之前也在其他地方看过这种用法,没理解是有什么特别含义还是二者皆可混用,还请解惑。

    作者回复: 这里取决于你是否需要通过Loading来传递数据,如果不需要传递的话,为了节省内容,全局使用同一个内存对象,这会更好一些。

    2022-04-20
    6
  • 魏全运
    MVVM+Clean架构的组合使得原先在VM里的数据处理逻辑转移到了usecase,这样VM的逻辑更加精简且清晰,并且由于clean架构的引入,数据层的代码将更加可测。但是,clean架构的缺点也很明显:代码臃肿、结构复杂。实际项目中很少会使用clean架构来实现一个业务模块。

    作者回复: 赞~

    2022-04-13
    4
  • sunlight
    还有其他这么好的Android课程推荐么,这门课程收获很多。最近没东西看了。。

    作者回复: 那就来看看我的技术博客吧:“朱涛的自习室”。

    2022-05-17
    2
  • 飓风
    usecase的好处感觉可以单元测试,一般我都是省去了直接在viewmodel单独定义一个suspend方法用来做单元测试,不知道还有没有其他好的方案可以对viewmodel做单元测试

    作者回复: “不知道还有没有其他好的方案可以对viewmodel做单元测试”,有的,只是比较麻烦,三言两语很难说清楚,你可以去看看官方文档。

    2022-05-05
    2
  • sunlight
    想请教下老师,一般view中对应一个viewModel还是多个viewModel,这个有统一标准吗

    作者回复: 没有标准,但大部分情况是一一对应。viewModel可以跟Activity一一对应,也可以跟Fragment一一对应。但涉及到共用逻辑的时候,同一个viewModel可以对应多个Fragment、甚至多个Activity。

    2022-05-05
    3
    2
  • Paul Shan
    MVVM和Clean架构的融合,相对于原来逻辑都在Activity里,实现了较好的分层,单元测试也容易多了。相对于MVP架构,MVVM架构避免了presenter和view里面来回穿梭的调用,简化了逻辑,而且得到谷歌较好的支持。MVVM架构在Android系统中的问题是,Andorid应用多是UI重度型应用,UI中的逻辑太多,分层解决的主要是非UI部分的代码,对于UI部分的分层,方法论层面就没有系统的支持,实践中的自动化测试也很不方便。Jetpack Compose在一定程度上,提供了UI模块化的解决方案,但是自动化测试也远比非UI的单元测试要复杂。这方面我不太熟,期待老师将来的精彩讲解。

    作者回复: 很棒的见解~Android的测试部分确实比较难,以后我会找机会在我的博客里分享的。

    2022-04-13
    2
    2
  • Geek_Adr
    我理解 解决复杂问题通用方法就是拆分或者说是分层,不管是MVVM或是Clean都是分层方法的一种,如何选择主要看复杂度。MVP或MVVM 可以理解为UI交互与业务逻辑 对等复杂度的分法,MVVM与Clean混合架构更重业务逻辑轻UI交互的分法,所以优点:应用在复杂业务场景合适,缺点:分层本身就需要理解,带来额外复杂度。HelloWorld 直写就好

    作者回复: 很棒的答案,赞~

    2022-04-21
    1
  • 杨小妞
    个人理解:对于数据处理不是很复杂的场景,UseCase一般用得很少,直接在vm完成数据请求处理然后就抛出去了。 有一个设想,对于UI很复杂的页面,将其粗略拆分成上、中、下三个Delegate(包含UI+业务),这样Activity任务处理就能减轻不少。

    作者回复: 是的,这个理解很不错。

    2022-04-13
    1
  • Geek_12f95b
    老师,问下你这个架构图 用啥软件画的呀

    作者回复: 基本上都是PPT做的。

    2022-04-29
  • ZircoN
    usecase google推荐是封装复杂逻辑或者逻辑复用时使用,正常情况如上面例子是可以去掉这一层的。

    作者回复: 是的,简单业务场景就显得有些多余。

    2022-04-13
收起评论
显示
设置
留言
13
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部