AndroidAll
Android 程序员所需要的技能:「数据结构算法」「程序架构」「设计模式」「性能优化」「组件化」「NDK 技术」「自定义 View」「性能优化」「Android 源码分析」「深入理解 Kotlin」「Java 核心技术」「Jetpack」「Router」「Flutter」「RxJava」「Glide」「LeakCanary」「Dagger2」「Retrofit」「OkHttp」「ButterKnife」「GreenDAO」「经典书籍」等。如果您有任何问题或建议欢迎 Issues 。 Android 知识脉络路线图:
#Java 核心技术
为了能够开发高质量的 Android App,首先要求我们具备扎实的 Java 基础。
不仅需要熟练使用 Java 各项 API。如 Java 网络编程、多线程并发、集合框架等。
还需要掌握常见 API 的底层原理。如 集合框架的实现原理,要求我们掌握常用的数据结构与算法。
除此以外,还需要我们对 Java 执行机制有一定了解,这个时候可要求我们对 Java 虚拟机有一定的掌握。如 class 字节码、类加载器、垃圾回收机制等。
关于这方面的知识,可以学习参考我之前的一些总结:
Java 基础:
Java 网络编程:
JavaIO:
- Java I/O 流操作(一)System Properties Runtime 类
- Java I/O 流操作(二)字节流与缓冲流
- Java I/O 流操作(三)File 文件操作、PrintWriter、SequenceInputStream
- Java I/O 流操作(四)对象的序列化
Java 多线程:
- Java 多线程(一)线程间的互斥和同步通信
- Java 多线程(二)同步线程分组问题
- Java 多线程(三)线程池入门 Callable 和 Future
- Java 多线程(四)ThreadPoolExecutor 线程池各参数的意义
- Java 多线程(五)Lock 和 Condition 实现线程同步通信
- Java 多线程(六)Semaphore 实现信号灯
- Java 多线程(七)CyclicBarrier 同步的工具类
- Java 多线程(八)CountDownLatch 同步工具类
- Java 多线程(九)Exchanger 同步工具类
- Java 多线程(十)ArrayBlockingQueue 阻塞队列
- Java 多线程(十一)JDK 同步集合
Java 集合框架:
- 数据结构与算法(十四)深入理解红黑树和 JDK TreeMap 和 TreeSet 源码分析
- 数据结构与算法(十三)平衡二叉树之 AVL 树
- 数据结构与算法(十二)并查集(Union Find)及时间复杂度分析
- 数据结构与算法(十一)Trie 字典树
- 数据结构与算法(十)线段树(Segment Tree)入门
- 数据结构与算法(九)Set 集合和 BinarySearchTree 的时间复杂度分析
- 数据结构与算法(八)二分搜索树(Binary Search Tree)
- 数据结构与算法(七)树和二叉树
- 数据结构与算法(六)二叉堆、优先队列和 Java PriorityQueue
- 数据结构与算法(五)深入理解递归
- 数据结构与算法(四)队列和 Java ArrayDeque 源码剖析
- 数据结构与算法(三)栈和 Java Stack 源码分析
- 数据结构与算法(二)线性表之链式存储和 LinkedList 实现
- 数据结构与算法(一)线性表之顺序存储和 ArrayList、Vector 源码剖析
- ArrayBlockingQueue 阻塞队列
Java 虚拟机:
- 深入理解 Java 虚拟机(一)~ class 字节码文件剖析
- 深入理解 Java 虚拟机(二)~ 类的加载过程剖析
- 深入理解 Java 虚拟机(三)~ class 字节码的执行过程剖析
- 深入理解 Java 虚拟机(四)~ 各种容易混淆的常量池
- 深入理解 Java 虚拟机(五)~ 对象的创建过程
- 深入理解 Java 虚拟机(六)~ Garbage Collection 剖析
数据结构与算法:
- 数据结构与算法(十四)深入理解红黑树和 JDK TreeMap 和 TreeSet 源码分析
- 数据结构与算法(十三)平衡二叉树之 AVL 树
- 数据结构与算法(十二)并查集(Union Find)及时间复杂度分析
- 数据结构与算法(十一)Trie 字典树
- 数据结构与算法(十)线段树(Segment Tree)入门
- 数据结构与算法(九)Set 集合和 BinarySearchTree 的时间复杂度分析
- 数据结构与算法(八)二分搜索树(Binary Search Tree)
- 数据结构与算法(七)树和二叉树
- 数据结构与算法(六)二叉堆、优先队列和 Java PriorityQueue
- 数据结构与算法(五)深入理解递归
- 数据结构与算法(四)队列和 Java ArrayDeque 源码剖析
- 数据结构与算法(三)栈和 Java Stack 源码分析
- 数据结构与算法(二)线性表之链式存储和 LinkedList 实现
- 数据结构与算法(一)线性表之顺序存储和 ArrayList、Vector 源码剖析
#深入理解 Kotlin
随着 Kotlin 在 Android 开发的过程中的普及,以及 Kotlin 本身的一些优势。要求我们对 Kotlin 也需要有很好的掌握。
为了更好的更快更深入的学习 Kotlin,我们可以在学习 Kotlin 的过程中,深度对比 Java,让我们对 Kotlin 的掌握程度快速达到对 Java 的掌握程度。
关于这 Koltin 相关的资料大家可参考我下面的文章,其中包括:类型体系、Lambda 表达式、高阶函数、泛型、集合、操作符重载、协程等 Kotlin 核心概念等:
以下是我在 B 站录制的 Kotlin 教程:
- [x] Kotlin 入门到进阶(1)——前言
- [x] Kotlin 入门到进阶(2)——变量、函数入门
- [x] Kotlin 入门到进阶(3)——表达式、语句及与 Java 的对比
- [x] Kotlin 入门到进阶(4)——结构化编程:顺序结构、选择结构、循环结构
- [x] Kotlin 入门到进阶(5)——空安全(Null Safety)和实战技巧
- [x] Kotlin 入门到进阶(6)——类型系统和访问修饰符详解
- [x] Kotlin 入门到进阶(7)——数组类型和它的扩展函数
- [x] Kotlin 入门到进阶(8)——Nothing 类型, 不为人知的细节
- [x] Kotlin 入门到进阶(9)——深入理解 Kotlin 集合、序列
- [x] Kotlin 入门到进阶(10)——聊一聊 Kotlin String
- [x] Kotlin 入门到进阶(11)——再谈 Kotlin 函数
- [x] Kotlin 入门到进阶(12)——彻底搞懂 Class 和 Interface
- [x] Kotlin 入门到进阶(13)——Java Property 和 Field 你真的懂么?
- [x] Kotlin 入门到进阶(14)——lateinit property 案例实战
- [x] Kotlin 入门到进阶(15)——深入理解属性代理(一) by lazy、Delegates.observable
- [x] Kotlin 入门到进阶(16)——深入理解属性委托(二) 代码演示 LazyThreadSafetyMode 的区别
- [x] Kotlin 入门到进阶(17)——深入理解属性委托(三) by map 和委托模式
- [x] Kotlin 入门到进阶(18)——枚举(一)为什么要有枚举?
- [x] Kotlin 入门到进阶(19)——枚举(二)枚举 API 特性
- [x] Kotlin 入门到进阶(20)——枚举(三)枚举的本质
- [x] Kotlin 入门到进阶(21)——枚举(四)枚举 switch case 原理分析
- [x] Kotlin 入门到进阶(22)——枚举(五)枚举的最佳实践
- [x] Kotlin 入门到进阶(23)——Kotlin1.7 枚举、密封类新特性解读 & 枚举 VS 密封类
- [x] Kotlin 入门到进阶(24)——操作符重载全解
- [x] Kotlin 入门到进阶(25)——优雅的文件 I/O 操作
- [x] Kotlin 入门到进阶(26)——异常(一) Kotlin 异常与 Java 的异同
- [x] Kotlin 入门到进阶(27)——异常(二) Kotlin 异常设计理念、如何设计异常 API
- [x] Kotlin 入门到进阶(28)——注解
- [x] Kotlin 入门到进阶(29)——深入理解反射
- [x] Kotlin 入门到进阶(30)——深入理解 lambda 表达式
- [x] Kotlin 入门到进阶(31)——彻底搞懂高阶函数
- [x] Kotlin 入门到进阶(32)——inline、crossinline、noinline 解析
- [x] Kotlin 入门到进阶(33)——return 和 loop jump
- [ ] Kotlin 入门到进阶(34)——彻底搞懂 Java 泛型
- [ ] Kotlin 入门到进阶(34)——彻底搞懂 Kotlin 泛型
- [ ] 协程系列...
#设计原则与模式
设计原则对我们设计出高内聚、低耦合的可维护代码起着至关重要的作用。设计原则与模式很简单,但是如何很好的应用到实际工作中,显得不那么简单。需要我们不断的去琢磨与思考,在这方面我也有一些心得与体会,和大家一起探讨:
- 设计模式 ~ 面向对象 6 大设计原则剖析与实战
- 设计模式 ~ 模板方法模式分析与实战
- 设计模式 ~ 观察者模式分析与实战
- 设计模式 ~ 单例模式分析与实战
- 设计模式 ~ 深入理解建造者模式与实战
- 设计模式 ~ 工厂模式剖析与实战
- 设计模式 ~ 适配器模式分析与实战
- 设计模式 ~ 装饰模式探究
- 设计模式 ~ 深入理解代理模式
- 设计模式 ~ 小结
#Android 架构
随着我们对设计原则与设计模式的理解与实践,我们也会对程序的一些架构提出一些问题,例如如何去解决我们项目中已存在的一些架构问题,关于这方面的内容可以参考:
- Android MVP 架构改造~如何重用顶层业务
- 二维火 Android 云收银模块化架构实践
- Android 架构—MVP 架构在 Android 中的实践
- Android-MVVM 架构-Data Binding 的使用
- 使用 repo 管理 Android 组件化项目
#Android 开源框架
使用 Android 开源框架,避免我们重复创建轮子。使用高质量的开源框架,能够帮助我们快速构建高质量的程序。
与此同时,我们了解其被的实现原理,知其然也知其所以然。我们也可以学到很多代码设计上的技巧,同时也能够帮我们快速排查问题。
这方面的内容,大家可以参考我的一些分析文章:
Jetpack:
- Android Jetpack(一)Lifecycle 组件原理剖析
- Android Jetpack(二)ViewModel 组件原理剖析
- Android Jetpack(三)LiveData 组件原理剖析
RxJava:
- RxJava create 操作符的用法和源码分析
- RxJava map 操作符用法详解
- RxJava flatMap 操作符用法详解
- RxJava concatMap 操作符用法详解
- RxJava onErrorResumeNext 操作符实现 app 与服务器间 token 机制
- RxJava retryWhen 操作符实现错误重试机制
- RxJava 使用 debounce 操作符优化 app 搜索功能
- RxJava concat 操作处理多数据源
- RxJava zip 操作符在 Android 中的实际使用场景
- RxJava switchIfEmpty 操作符实现 Android 检查本地缓存逻辑判断
- RxJava defer 操作符实现代码支持链式调用
- combineLatest 操作符的高级使用
- RxJava 导致 Fragment Activity 内存泄漏问题
- interval、takeWhile 操作符实现获取验证码功能
- RxJava 线程的自由切换
Retrofit:
- Android Retrofit 源码系列(一)~ 原理剖析
- Android Retrofit 源码系列(二)~ 自定义 CallAdapter
- Android Retrofit 源码系列(三)~ 整合 RxJava、Coroutine 分析
- Android Retrofit 源码系列(四)~ 文件上传
- Android Retrofit 源码系列(五)~ 设计模式分析
Dagger2:
ButterKnife:
- Android 开发之手把手教你写 ButterKnife 框架(三)
- Android 开发之手把手教你写 ButterKnife 框架(二)
- Android 开发之手把手教你写 ButterKnife 框架(一)
#Android 性能优化
#NDK 开发
#跨平台开发
Flutter:
- (一)Flutter 学习之 Dart 变量和类型系统
- (二)Flutter 学习之 Dart 展开操作符 和 Control Flow Collections
- (三)Flutter 学习之 Dart 函数
- (四)Flutter 学习之 Dart 操作符、控制流和异常处理
- (五)Flutter 学习之 Dart 面向对象
- (六)Flutter 学习之 Dart 异步操作详解
- (七)Flutter 学习之开发环境搭建
- (八)Flutter 和 Native 之间的通信详解
- (九)Android 项目集成 Flutter 模块
- (十)Flutter FutureBuilder 优雅构建异步 UI
- 更新中...
#经典书籍
- 《Android 开发艺术探索》
- 《Android 源码设计模式》
- 《Android 自定义控件开发入门与实战》
- 《Android 软件安全与逆向分析》
- 《Android 群英传》
- 《Java 编程思想》
- 《Java 核心技术:卷 I 基础知识》
- 《Java8 实战》
- 《重构:改善既有代码的设计》
- 《Java 并发编程实战》
- 《深入理解 Java 虚拟机》
- 《Effective Java 第二版》
- 《Java 与模式》
- 《代码整洁之道》
- 《剑指 Offer 名企面试官精讲典型编程题》
- 《阿里巴巴-深入探索 Android 热修复技术原理》
- 《Kotlin In Action》
- 《HTTP 权威指南》
- 陆续整理网盘开放中...