SumTea_Android
Introduction: 基于组件化+模块化+Kotlin+协程+Flow+Retrofit+Jetpack+MVVM+短视频架构实现的 WanAndroid 客户端
Tags:
🚀 SumTea 是一个基于 组件化+模块化+Kotlin+协程+Flow+Retrofit+Jetpack+MVVM+短视频 架构实现的 WanAndroid 客户端。 能提供大家学习如何从 0 到 1 打造一个符合大型 Android 项目的架构模式。
项目截图 | 项目截图 | 项目截图 | 项目截图 |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
一、 关于 SumTea
1. 项目架构
- 项目采用 Kotlin 语言编写,结合 Jetpack 相关控件,
Navigation
,Lifecyle
,DataBinding
,LiveData
,ViewModel
等搭建的 MVVM 架构模式; - 通过组件化,模块化拆分,实现项目更好解耦和复用,ARouter 实现模块间通信;
- 使用 协程+Flow+Retrofit+OkHttp 优雅地实现网络请求;
- 通过 mmkv,Room 数据库等实现对数据缓存的管理;
- 使用谷歌 ExoPlayer 实现短视频播放;
- 使用 Glide 完成图片加载;
- 通过 WanAndroid 提供的 API 实现的一款玩安卓客户端。
项目使用MVVM 架构模式,基本上遵循 Google 推荐的架构,对于 Repository
,Google 认为 ViewModel
仅仅用来做数据的存储,数据加载应该由 Repository
来完成。通过 Room 数据库实现对数据的缓存,在无网络或者弱网的情况下优先展示缓存数据。
2. 项目功能
APP 壳工程:
- Application 类
- 打包环境,签名,混淆规则,业务模块集成,APP 主题等配置等
mod_main:
- 包含首页,分类,体系,我的四个 tab,Navigation 实现管理
- 首页 tab 包含 Banner 轮播图,视频列表,项目文章列表
- 分类 tab 包含各网站文章的分类内容
- 体系 tab 包含知识体系的文章分类,二级为文章列表
- 我的 tab 包含个人信息,服务栏,文章推荐列表
mod_user:
- 包含个人设置页面,账户安全
- 个人信息页设置头像、姓名、手机号码等个人信息
- 隐私政策条款功能
- 查看版本信息以及更新 App 功能
- 清除手机缓存功能
- 用户退出登录功能
mod_login:
- 登录页面登录功能,以及隐私政策
- 其他登录方式选择
- 用户注册页面
mod_search:
- 搜索页面
- 用户搜索历史数据
- 搜索推荐数据
mod_video:
- RecyclerView 实现防抖音短视频列表,保证全局只有一个播放器
- ExoPlayer 播放器实现视频播放功能
- RotateNoteView 实现旋转音乐盒
lib_framework:
- Base 基类相关
- Ext 拓展函数
- Loading 加载框
- LogUtil 日志打印工具类
- Manager 相关管理类
- TipsToast 吐司工具类
- Utils 相关工具类
- 带删除按钮的 EditText
lib_common:
- 二次封装的 Banner 组件
- 常量类
- 实体 Bean
- 组件化通信的 provider 和 IService
- 通用 View
lib_network:
- Api 接口类
- 错误相关类
- Flow 扩展类,网络请求封装
- Http 相关拦截器
- 相关管理类
- BaseViewModel&BaseRepository 协程网络请求封装
- OkHttp 和 Retrofit 封装
lib_stater:
- 异步任务,延迟任务启动器
- 任务优先级,线程池,依赖关系,是否需要等待
lib_banner:
- 功能全面的 Banner 组件,lifecycle 关联 Activity/Fragment 生命周期
lib_glide:
- 对 Glide 使用的二次封装
- 圆角,圆形,缓存,高斯模糊图片加载
lib_room:
- Room 数据库相关
- 视频列表缓存
3. 收获
除去可以学到 Kotlin + MVVM + Android Jetpack + 协程 + Flow + 组件化 + 模块化 + 短视频 的知识,相信你还可以在我的项目中学到:
- 如何使用 Charles 抓包。
- 提供大量扩展函数,快速开发,提高效率。
ChipGroup
和FlexboxLayoutManager
等多种原生方式实现流式布局。- 符合阿里巴巴 Java 开发规范和阿里巴巴 Android 开发规范,并有良好的注释。
CoordinatorLayout
和Toolbar
实现首页栏目吸顶效果和轮播图电影效果。- 利用
ViewOutlineProvider
给控件添加圆角,大大减少手写 shape 圆角 xml。 ConstraintLayout
的使用,几乎每个界面布局都采用的ConstraintLayout
。- 异步任务启动器,优雅地处理 Application 中同步初始化任务问题,有效减少 APP 启动耗时。
- 无论是模块化或者组件化,它们本质思想都是一样的,都是化整为零,化繁为简,两者的目的都是为了重用和解耦,只是叫法不一样。
二、Jetpack 组件进阶
1.浅谈 Android Jetpack - Navigation 的架构设计
- Navigation 的简单用法,架构设计,源码剖析 2.Android 架构灵魂组件 Lifecycle 的生命周期机制详解
- Lifecycle 的使用,架构设计,生命周期机制 3.由浅入深,ViewModel 配置变更复用原理详解
- ViewModel 因配置变更保存和复用机制 4.ViewModel 进阶 | 使用 SavedState 实现数据复用的另一种方式
- 使用 SavedState 实现数据复用的另一种方式 5.关于 LiveData 全面详解
- LiveData 解析,事件总线实现 6.ViewBinding 与 DataBinding
- 视图绑定与数据双向绑定
三、Kotlin 协程学习三部曲
- 协程的概念和原理、协程框架的基础使用、挂起函数以及挂起与恢复等 Kotlin 协程实战进阶(二、进阶篇)
- 协程的高级用法、Flow、Channel 等 Kotlin 协程实战进阶(三、原理篇)
- 协程的底层原理:状态机,挂起与恢复,线程切换原理
四、Android 性能优化系列
深入研究 Android 启动速度优化(上)- 看完这些启动优化已经完成 80%了
- 分析应用启动流程,优化阶段与首帧定义,耗时统计的八种方式 深入研究 Android 启动速度优化(下)- 不敢说 100%秒开,但这样做“雀食”是快
- 常规优化方案,业务优化方案,进阶优化方案,黑科技对启动的影响,如何监控和防劣化机制的建设 深入研究 Android 内存优化(上)- 至少解决 APP 中 90%的内存异常问题
- 内存管理机制、内存问题及现象、常见内存泄漏场景、内存优化策略、图片和 Bitmap 优化策略等,提出多种优化方法
创作不易,如果本项目对您有帮助,麻烦点个Star,您的Star将是我继续创作和写博客的动力! 项目中有 APK 文件,可以直接安装看效果。
欢迎在 Issue 中提交对本仓库的改进建议~
五、注意事项
本项目 API 均来源于WanAndroid,禁止商用。
您可以在非商业的前提下免费转载,但同时您必须:
- 保持文章原文,不作修改。
- 明确署名,即至少注明
作者:Sumiya
字样以及文章的原始链接。 - 微信公众号转载一律不授权
原创
标志。
About me
微信:
SUM_817
Email:
su_mingyan@163.com
掘金:https://juejin.cn/user/1654096907477549
如您有任何问题,也可以添加我的微信,拉您进入 SumTea_Android 技术群,进行技术和学习上的交流。
感谢您的阅读!
致谢
API: 鸿洋提供的 WanAndroid API
主要使用的开源框架: