==============
2.1 Activity 知识梳理
Activity 知识梳理(1) - Activity 生命周期
Activity 知识梳理(3) - Activity 状态保存和恢复
2.2 Fragment 知识梳理
Fragment 知识梳理(1) - Fragement 源码解析
Fragment 知识梳理(2) - Fragment 状态保存和恢复
Fragment 知识梳理(3) - FragmentPagerAdapter 和 FragmentStatePagerAdapter 解析
Fragment 知识梳理(4) - FragmentPagerAdapter 和 FragmentStatePagerAdapter 的数据更新问题
2.3 RecyclerView 知识梳理
RecyclerView 知识梳理(2) - Adapter
RecyclerView 知识梳理(3) - LayoutManager
RecyclerView 知识梳理(4) - ItemDecoration
RecyclerView 知识梳理(5) - ItemTouchHelper
2.4 Loader 知识梳理
Loader 知识梳理(1) - LoaderManager 初探
Loader 知识梳理(2) - initLoader 和 restartLoader的区别
2.5 Android 异步任务知识梳理
Android 异步任务知识梳理(1) - AsyncTask 解析
Android 异步任务知识梳理(2) - HandlerThread 解析
Android 异步任务知识梳理(3) - AsyncQueryHandler 解析
2.6 Android 数据存储知识梳理
Android 数据存储知识梳理(1) - SQLiteOpenHelper 源码解析
Android 数据存储知识梳理(2) - Android存储目录
Android 数据存储知识梳理(3) - SharedPreference 源码解析
Android 数据存储知识梳理(4) - 数据库升级操作的处理策略
2.7 状态栏
2.8 广播
Broadcast 知识梳理(1) - BroadcastReceiver 基本概念
2.9 Service
Service 知识梳理(1) - Service 问题整理
2.10 版本适配
三、开源框架
======
3.1 Retrofit 知识梳理
Retrofit 知识梳理(2) - Retrofit 动态代理内部实现
3.2 OkHttp 知识梳理
OkHttp 知识梳理(1) - OkHttp 源码解析之入门
OkHttp 知识梳理(2) - OkHttp 源码解析之异步请求 & 线程调度
OkHttp 知识梳理(4) - OkHttp 之缓存源码解析
3.3 Volley
3.4 Glide
Glide 知识梳理(5) - 自定义GlideModule
Glide 知识梳理(6) - Glide 源码解析之流程剖析
3.5 RxJava2 理论
RxJava 知识梳理(2) - RxJava2 操作符实践
RxJava 知识梳理(3) - RxJava2 基础知识小结
3.6 RxJava2 实战
RxJava2 实战知识梳理(1) - 后台执行耗时操作,实时通知 UI 更新
RxJava2 实战知识梳理(2) - 计算一段时间内数据的平均值
RxJava2 实战知识梳理(4) - 结合 Retrofit 请求新闻资讯
RxJava2 实战知识梳理(5) - 简单及进阶的轮询操作
RxJava2 实战知识梳理(6) - 基于错误类型的重试请求
RxJava2 实战知识梳理(7) - 基于 combineLatest 实现的输入表单验证
RxJava2 实战知识梳理(8) - 使用 publish + merge 优化先加载缓存,再读取网络数据的请求过程
RxJava2 实战知识梳理(9) - 使用 timer/interval/delay 实现任务调度
RxJava2 实战知识梳理(10) - 屏幕旋转导致 Activity 重建时恢复任务
c463a)
RxJava2 实战知识梳理(11) - 检测网络状态并自动重试请求
RxJava2 实战知识梳理(12) - 实战讲解 publish & replay & share & refCount & autoConnect
RxJava2 实战知识梳理(13) - 如何使得错误发生时不自动停止订阅关系
RxJava2 实战知识梳理(14) - 在 token 过期时,刷新过期 token 并重新发起请求
RxJava2 实战知识梳理(15) - 实现一个简单的 MVP + RxJava + Retrofit 应用
3.7 Dagger2 知识梳理
Dagger2 知识梳理(1) - Dagger2 依赖注入的两种方式
Dagger2 知识梳理(2) - @Qulifier 和 @Named 解决依赖注入迷失
Dagger2 知识梳理(3) - 使用 dependencies 和 @SubComponent 完成依赖注入
Dagger2 知识梳理(4) - @Scope 注解的使用
四、算法知识梳理
========
五、Kotlin 知识梳理
=============
Kotlin 知识梳理(4) - 数据类、类委托 及 object 关键字
Kotlin 知识梳理(5) - lambda 表达式和成员引用
Kotlin 知识梳理(10) - 高阶函数:Lambda 作为形参或返回值
六、多线程知识梳理
=========
多线程知识梳理(2) - synchronized 三部曲之基本使用
多线程知识梳理(3) - synchronized 三部曲之锁优化
多线程知识梳理(4) - synchronized 三部曲之等待/通知模型
多线程知识梳理(5) - 线程池四部曲之 Executor 框架
多线程知识梳理(6) - 线程池四部曲之 ThreadPoolExecutor
多线程知识梳理(7) - ConcurrentHashMap 实现原理
多线程知识梳理(12) - ReentrantLock 解析
多线程知识梳理(13) - ReentrantReadWriteLock 原理
七、 插件化知识梳理
==========
插件化知识梳理(1) - Small 框架之如何引入应用插件
插件化知识梳理(2) - Small 框架之如何引入公共库插件
插件化知识梳理(4) - Small 框架之如何实现插件更新
插件化知识梳理(5) - Small 框架之如何不将插件打包到宿主中
插件化知识梳理(6) - Small 源码分析之 Hook 原理
插件化知识梳理(10) - Service 插件化实现及原理
八、NDK 知识梳理
==========
NDK 知识梳理(1) - 使用 CMake 进行 NDK 开发之初体验
NDK 知识梳理(2) - 使用 CMake 进行 NDK 开发之如何编写 CMakeLists.txt 脚本
九、Material Design 控件知识梳理
========================
Material Design 控件知识梳理(1) - Android Design Support Library 是什么
Material Design 控件知识梳理(2) - AppBarLayout & CollapsingToolbarLayout
Material Design 控件知识梳理(3) - BottomSheet && BottomSheetDialog && BottomSheetDialogFragment
Material Design 控件知识梳理(4) - FloatingActionButton
Material Design 控件知识梳理(5) - DrawerLayout && NavigationView
Material Design 控件知识梳理(6) - Snackbar
Material Design 控件知识梳理(7) - BottomNavigationBar