一、Java 知识梳理
Java&Android 基础知识梳理(1) - 注解
Java&Android 基础知识梳理(2) - 序列化
Java&Android 基础知识梳理(3) - 内存区域
Java&Android 基础知识梳理(4) - 垃圾收集器与内存分配策略
Java&Android 基础知识梳理(5) - 类加载&对象实例化
Java&Android 基础知识梳理(6) - 字节输入输出流
Java&Android 基础知识梳理(7) - Android 虚拟机
Java&Android 基础知识梳理(8) - 容器类
二、Android 基础知识
2.1 Activity 知识梳理
Activity 知识梳理(1) - Activity 生命周期
Activity 知识梳理(2) - Activity 栈
Activity 知识梳理(3) - Activity 状态保存和恢复
2.2 Fragment 知识梳理
Fragment 知识梳理(1) - Fragement 源码解析
Fragment 知识梳理(2) - Fragment 状态保存和恢复
Fragment 知识梳理(3) - FragmentPagerAdapter 和 FragmentStatePagerAdapter 解析
Fragment 知识梳理(4) - FragmentPagerAdapter 和 FragmentStatePagerAdapter 的数据更新问题
2.3 View 绘制体系知识梳理
View 绘制体系知识梳理(1) - LayoutInflater#inflate 源码解析
View 绘制体系知识梳理(2) - setContentView 源码解析
View 绘制体系知识梳理(3) - 绘制流程之 Measure 详解
View 绘制体系知识梳理(4) - 绘制过程之 Layout 详解
View 绘制体系知识梳理(5) - 绘制过程之 Draw 详解
View 绘制体系知识梳理(6) - 绘制过程之 requestLayout 和 invalidate 详解
View 绘制体系知识梳理(7) - getMeasuredWidth 和 getWidth 的区别
2.4 View 事件传递体系知识梳理
View 事件传递体系知识梳理(1) - 事件分发机制
View 事件传递体系知识梳理(2) - 嵌套滑动的实现原理
2.5 RecyclerView 知识梳理
RecyclerView 知识梳理(1) - 综述
RecyclerView 知识梳理(2) - Adapter
RecyclerView 知识梳理(3) - LayoutManager
RecyclerView 知识梳理(4) - ItemDecoration
RecyclerView 知识梳理(5) - ItemTouchHelper
2.6 图片基础知识梳理
图片基础知识梳理(1) - ImageView 的 ScaleType 属性解析
图片基础知识梳理(2) - Bitmap 占用内存分析
图片基础知识梳理(3) - Bitmap&BitmapFactory 解析
2.7 图片压缩知识梳理
图片压缩知识梳理(0) - 图片压缩学习计划
图片压缩知识梳理(1) - PNG 原理
图片压缩知识梳理(2) - 减小 PNG 大小
图片压缩知识梳理(5) - VectorDrawable 简介
图片压缩知识梳理(6) - VectorDrawable 及 AnimatedVectorDrawable 使用详解
图片压缩知识梳理(8) - WebP 使用详解
图片压缩知识梳理(9) - 选择合适的图片格式
2.8 Canvas & Paint 知识梳理
Canvas&Paint 知识梳理(1) - Canvas 基础
Canvas&Paint 知识梳理(2) - Canvas 的保存和恢复
Canvas&Paint 知识梳理(3) - 颜色合成 Paint#setColorFilter
Canvas&Paint 知识梳理(4) - 图像合成 Paint#setXfermode
Canvas&Paint 知识梳理(5) - Paint#setShader
Canvas&Paint 知识梳理(6) - 绘制路线 Path 基本用法
2.9 Loader 知识梳理
Loader 知识梳理(1) - LoaderManager初探
Loader 知识梳理(2) - initLoader和restartLoader的区别
Loader 知识梳理(3) - 自定义Loader
2.10 动画体系知识梳理
动画体系知识梳理(1) - 转场动画 ContentTransition 理论篇
动画体系知识梳理(2) - 转场动画 ContentTransition 实践篇
2.11 Android 异步任务知识梳理
Android 异步任务知识梳理(1) - AsyncTask 解析
Android 异步任务知识梳理(2) - HandlerThread 解析
Android 异步任务知识梳理(3) - AsyncQueryHandler 解析
2.12 Android 数据存储知识梳理
Android 数据存储知识梳理(1) - SQLiteOpenHelper 源码解析
Android 数据存储知识梳理(2) - Android存储目录
Android 数据存储知识梳理(3) - SharedPreference 源码解析
Android 数据存储知识梳理(4) - 数据库升级操作的处理策略
三、开源框架
3.1 Retrofit 知识梳理
Retrofit 知识梳理(1) - 流程分析
Retrofit 知识梳理(2) - Retrofit 动态代理内部实现
3.2 OkHttp 知识梳理
OkHttp 知识梳理(1) - OkHttp 源码解析之入门
OkHttp 知识梳理(2) - OkHttp 源码解析之异步请求 & 线程调度
OkHttp 知识梳理(3) - OkHttp 之缓存基础
3.3 Volley
Volley 知识梳理 - Volley 源码解析
3.4 Glide
Glide 知识梳理(1) - 基本用法
Glide 知识梳理(2) - 自定义Target
Glide 知识梳理(3) - 自定义transform
Glide 知识梳理(4) - 自定义animate
Glide 知识梳理(5) - 自定义GlideModule
3.5 RxJava2 理论
RxJava 知识梳理(1) - RxJava 解析
RxJava 知识梳理(2) - RxJava2 操作符实践
RxJava 知识梳理(3) - RxJava2 基础知识小结
3.6 RxJava2 实战
RxJava2 实战知识梳理(1) - 后台执行耗时操作,实时通知 UI 更新
RxJava2 实战知识梳理(2) - 计算一段时间内数据的平均值
RxJava2 实战知识梳理(3) - 优化搜索联想功能
RxJava2 实战知识梳理(4) - 结合 Retrofit 请求新闻资讯
RxJava2 实战知识梳理(5) - 简单及进阶的轮询操作
RxJava2 实战知识梳理(6) - 基于错误类型的重试请求
RxJava2 实战知识梳理(7) - 基于 combineLatest 实现的输入表单验证
RxJava2 实战知识梳理(8) - 使用 publish + merge 优化先加载缓存,再读取网络数据的请求过程
RxJava2 实战知识梳理(9) - 使用 timer/interval/delay 实现任务调度
RxJava2 实战知识梳理(10) - 屏幕旋转导致 Activity 重建时恢复任务
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 注解的使用
四、算法知识梳理
算法知识梳理(1) - 排序算法
- 插入排序
- 希尔排序
- 选择排序
- 冒泡排序
- 计数排序
- 基数排序
- 归并排序
- 快速排序
- 双向扫描的快速排序
- 堆排序
算法知识梳理(2) - 字符串算法第一部分
- 替换字符串中的空格
- 输入一个字符串,打印出该字符串的所有排列
- 第一个只出现一次的字符
- 翻转句子
- 计算字符串之间的最短距离
算法知识梳理(3) - 字符串算法第二部分
- 查找字符串中的最长重复子串
- 求长度为
N
的字符串的最长回文子串 - 将字符串中的
*
移到前部,并且不改变非*
的顺序 - 不开辟用于交换的空间,完成字符串的逆序
C++
- 最短摘要生成
- 最长公共子序列
算法知识梳理(4) - 数组第一部分
- 二维数组的整数查找
- 旋转数组中的最小数字(旋转数组中的最大数字)
- 调整数组使奇数位于偶数之前
- 找出数组中出现次数超过一半的数字
算法知识梳理(5) - 数组第二部分
- 找到最小的
k
个数 - 连续子数组的最大和
- 连续子数组的最大和(二维)
- 求数组当中的逆序对
算法知识梳理(6) - 数组第三部分
- 在递增排序的数组中,查找指定数字出现的个数
- 查找数组中只出现一次的两个数字
- 在递增排序的数组中,查找和为
s
的两个数 - 输入一个正数
s
,打印出所有和为s
的连续正数序列 - 数组当中的最大最小值
算法知识梳理(7) - 数组第四部分
- 求数组当中的最长递增子序列(求数组当中的最长递减子序列)
- 区间重合判断
- 一个整数数组,长度为
n
,将其分为m
份,使各份的和相等,求m
的最大值
算法知识梳理(8) - 二分查找算法及其变型
- 普通二分查找
- 查找关键字第一次出现的位置
- 查找关键字最后一次出现的位置
- 查找小于关键字的最大数字出现的位置
- 查找大于关键字的最小数字出现的位置
五、Kotlin 知识梳理
Kotlin 知识梳理(1) - Kotlin 基础
Kotlin 知识梳理(2) - 函数的定义与调用
Kotlin 知识梳理(3) - 类、对象和接口
Kotlin 知识梳理(4) - 数据类、类委托 及 object 关键字
Kotlin 知识梳理(5) - lambda 表达式和成员引用
Kotlin 知识梳理(6) - Kotlin 的可空性
Kotlin 知识梳理(7) - Kotlin 的类型系统
Kotlin 知识梳理(8) - 运算符重载及其他约定
Kotlin 知识梳理(9) - 委托属性
Kotlin 知识梳理(10) - 高阶函数:Lambda 作为形参或返回值
Kotlin 知识梳理(11) - 内联函数
Kotlin 知识梳理(12) - 泛型类型参数
Kotlin 知识梳理(13) - 运行时的泛型
六、多线程知识梳理
多线程知识梳理(1) - 并发编程的艺术笔记
多线程知识梳理(2) - synchronized 三部曲之基本使用
多线程知识梳理(3) - synchronized 三部曲之锁优化
多线程知识梳理(4) - synchronized 三部曲之等待/通知模型
多线程知识梳理(5) - 线程池四部曲之 Executor 框架
多线程知识梳理(6) - 线程池四部曲之 ThreadPoolExecutor
多线程知识梳理(7) - ConcurrentHashMap 实现原理
七、 插件化知识梳理
插件化知识梳理(1) - Small 框架之如何引入应用插件
插件化知识梳理(2) - Small 框架之如何引入公共库插件
插件化知识梳理(3) - Small 框架之宿主分身
插件化知识梳理(4) - Small 框架之如何实现插件更新
插件化知识梳理(5) - Small 框架之如何不将插件打包到宿主中
插件化知识梳理(6) - Small 源码分析之 Hook 原理
插件化知识梳理(7) - 类的动态加载入门
插件化知识梳理(8) - 类的动态加载源码分析
插件化知识梳理(9) - 资源的动态加载示例及源码分析
插件化知识梳理(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
Material Design 控件知识梳理(8) - TabLayout
Material Design 控件知识梳理(9) - TextInputLayout
十、性能优化工具知识梳理
10.1 性能优化工具知识梳理
性能优化工具知识梳理(1) - TraceView
性能优化工具知识梳理(2) - Systrace
性能优化工具知识梳理(3) - 调试GPU过度绘制 & GPU呈现模式分析
性能优化工具知识梳理(4) - Hierarchy Viewer
性能优化工具知识梳理(5) - MAT
性能优化工具知识梳理(6) - Memory Monitor & Heap Viewer & Allocation Tracker
性能优化工具知识梳理(7) - LeakCanary
性能优化工具知识梳理(8) - Lint
10.2 性能优化技巧知识梳理
性能优化技巧知识梳理(1) - 布局优化
性能优化技巧知识梳理(2) - 内存优化
十一、架构设计知识梳理
架构设计知识梳理(1) - Dagger2
架构设计知识梳理(2) - Flux
十二、设计模式知识梳理
设计模式知识梳理(1) - 设计模式概述
十三、Framework 源码分析知识梳理
Framework 源码解析知识梳理(1) - 应用进程与 AMS 的通信实现
Framework 源码解析知识梳理(2) - 应用进程与 WMS 的通信实现
Framework 源码解析知识梳理(3) - 应用进程之间的通信实现
Framework 源码解析知识梳理(4) - 从源码角度谈谈 Handler 的应用
Framework 源码解析知识梳理(5) - startService 源码分析
Framework 源码解析知识梳理(6) - ContentProvider 源码解析
十四、其它
Gradle 使用配置总结
Ubuntu下 切换 JDK 版本
Android 状态栏知识点总结