Skip to content

suming77/Android-Core-Realm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Android-Core-Realm

What you need to know to be a good Android developer

目录

XIII XIV
UI组件 🔰 四大组件 💻 动画 ☯️ 设计模式 🏁 异步任务机制 🚦 自定义View🚀 网络请求❤️ 响应式编程🐒 Kotlin 🔥 进程通信 ☎️ 性能优化🔧 优秀第三方控件👨 NDK🍎 拓展🍴

前言:

RecyclerView、Andorid动画、OkHttp与Retrofit的网络请求、多进程、View的绘制流程、事件分发、消息队列、AIDL、Binder、Kotlin等,这类知识对于要成为一位优秀Android工程师的人来说是必须完全掌握的,同时他也是能鉴别高级和初中级工程师的一块试金石。因此,为了更好将各个知识层面的知识体系更好融合在一起,笔者创建了Android-Core-Realm这个项目,希望带领读者掌握Android系统架构中各个核心技能。

OkHttp与Retrofit是当前主流网络请求框架,view的绘制是我们自定义控件的理论基础,只有掌握了view是如何绘制的才能个性化的自定义控件;事件分发一直是Android开发的难点之一,也是必须掌握的;关于handler机制也是android的一块难点,因为包括Asynctask、系统启动、Intentservice等底层都是通过handler来实现的,所以掌握后handler机制不仅能提高你的实战开发能力,更能让你系统的了解整个android系统运作的情况;binder是Android系统进程间通信最重要的手段之一,现阶段app的发展离不开多进程的运用,经常会启动例如定位、推送等需要在后台开启动的进程来来保证主进程的内存运行;所以合理的使用多进程也是十分必要的;性能优化是Android细分领域中最难且也是知识面涉及最深和最广的方向之一;Flutter、热修复、插件化等是发展潮流需要。

  • 软技能(已完成)

(建议精读)学习之力 — 提高学习效率99%的灵魂秘籍!

  • Andorid核心思维导图总览(持续更新……)

点击查看大图

ⅠUI组件 🔰

布局控件

ConstraintLayout约束布局

  • 作为一款强大的调整View位置和大小的ViewGroup被Google所推荐,它能在复杂布局中有效降低布局层级,提高性能,使用更加灵活。

RecyclerView系列

Android5.0之后Google推出了新的列表控件RecyclerView,代替了经典的ListView,是一个强大的滑动组件,拥有item的复用回收功能,更加高级和灵活。

深入理解 RecyclerView (一、基础篇)

  • RecyclerView的基础使用、网格布局、瀑布流布局

深入理解 RecyclerView (二、功能篇)

  • RecyclerView的ItemType(不同条目类型)

深入理解 RecyclerView (三、功能篇)

  • RecyclerView的ItemDecoration分割线、增删item动画效果、拖拽和侧滑删除功能

深入理解 RecyclerView (四、封装篇)

  • RecyclerView的自定义点击事件、万能ViewHolder和Adapter简单封装

深入理解 RecyclerView (五、绘制篇)

  • 源码剖析RecyclerView的绘制流程

深入理解 RecyclerView (六、滑动篇)

  • 源码剖析RecyclerView的滑动原理

深入理解 RecyclerView (七、滑动篇)

  • 源码剖析RecyclerView的嵌套滑动机制

深入理解 RecyclerView (八、缓存篇)

  • 源码剖析RecyclerView的回收复用缓存机制

深入理解 RecyclerView (九、自定义篇)

  • 参考RecyclerView的LinearLayoutManager原理自定义LayoutManager

Ⅱ 四大组件 💻

Activity

Activity是Android应用的四大组件之一,它负责管理Android应用的用户界面。

Activity系列(一、基础篇)

  • Activity:创建步骤、清单文件注册、显式隐式意图、数据传递

Activity系列(二、启动篇)

  • Activity的四种启动模式(图解实例和场景使用)

Ⅲ Andorid动画系列 ☯️

Android动画有两种类型的动画View Animation(视图动画)和Property Animation(属性动画)。

View动画

Android动画(一、基础篇)

  • 补间动画alpha、scale、translate、rotate、set的xml属性及用法

Android动画(二、基础篇)

  • 代码动态实现补间动画alpha、scale、translate、rotate、set、插值器动画&属性详解

属性动画

Android动画(三、基础篇)

  • 属性动画ValueAnimator的基本使用

Android动画(四、基础篇)

  • 属性动画ObjectAnimator基本使用以及属性详解

Android动画(五、进阶篇)

  • 插值器(Interpolator)、计算器(Evaluator)、ValueAnimator的ofObject用法等相关知识

Android动画(六、组合篇)

  • 组合动画AnimatorSet和PropertyValuesHolder的使用

动画原理

Android动画(七、原理篇)

  • 补间动画(Tween Animation)的运行原理

Android动画(八、原理篇)

  • 属性动画的原理

Ⅳ 常用设计模式 🏁

设计模式代表了最佳的实践,是一套被反复使用,多数人知晓,经过分类编目,代码设计经验的总结。使用设计模式是为了重用代码,让代码更容易被人理解,保证代码可靠性。设计模式提供了软件开发过程中面临的一些问题的最佳解决方案,非常重要。

单例模式

设计模式(一、单例模式)

  • 单例模式的几种实现方式

Ⅴ 异步任务机制 🚦

Andorid中的重点难点

Handler消息机制

深入理解Android消息机制

  • 源码剖析Handler消息机制

Thread和线程池

深入理解Android线程池

  • Android 线程池的使用和原理

Thread线程停止的几种方式

  • 如何正确地停止线程?

Ⅵ 自定义View 🚀

View的绘制是我们自定义控件的理论基础,绘制原理、滑动原理、弹性滑动、滑动冲突、measure、layout和draw等,掌握才能绘制个性化的自定义控件,事件分发一直是Android开发的难点之一。

View的工作原理

View的事件分发机制

[深入理解Android事件分发机制(未完成)]

自定义控件

自定义View(一、基础篇)

  • 自定义控件的初始化

Ⅶ 网络请求 ❤️

OKHttp是一款优秀HTTP框架,retrofit是现在比较流行的网络请求封装框架,可以理解为okhttp的加强版,底层封装了Okhttp。

OkHttp

OkHttp(一、基础篇)

  • OkHttp的介绍和使用

OkHttp(二、原理篇)

  • 深入源码解析OkHttpClient、dispatcher调度器、Intercepoter拦截器

Retrofit

Retrofit(一、基础篇)

  • Retrofit的介绍和使用

Ⅷ 响应式编程 🐒

RxJava

一个优秀的异步操作库,简洁、优雅、强大的操作符。(一个在 JVM 上使用可观测的序列来组成异步的,基于事件的程序的库)

RxJava2详解(一)

  • 详细介绍了RxJava的使用(基本创建、快速创建、延迟创建等操作符)

RxJava2详解(二)

  • RxJava转换、组合、合并等操作符的使用

RxJava2详解(三)

  • RxJava延迟、do相关、错误处理等操作符的使用

RxJava2详解(四)

  • RxJava过滤、其他操作符的使用

Ⅸ Kotlin 🔥

Android 的官方开发语言,能很好兼容Java,简洁优雅务实安全,函数式编程。

Kotlin基础

Kotlin基础「一」

  • 你了解Kotlin的let,with,run,apply,also作用域函数的区别吗?

Kotlin基础「二」

  • 变量(var与val)、常量、注释

Kotlin基础「三」

  • 数据类型(数值类型,布尔类型,字符类型,字符串类型,数组类型)

Kotlin基础「四」

  • 逻辑控制语句(if、for、when、while、return、break、continue)

Kotlin基础「五」

  • 可空类型?,空安全?.,空值合并?:,非空断言!!,类型安全转换as?

Kotlin基础「六」

  • 函数的声明和使用

Kotlin基础「七」

  • 类和继承

Kotlin基础「八」

  • 属性与字段(Getter()与Setter(),后备字段field)

Kotlin基础「九」)

  • 包与导入(Packages and Imports)

Kotlin基础「十」

  • 接口与函数接口(Functional (SAM) interfaces)

Kotlin基础「十一」

  • 可见性修饰符(private、protected、internal、public)

Kotlin基础「十二」

  • 扩展Extensions(扩展函数与属性)

Kotlin基础「十三」

  • 数据类(Data Classes)

Kotlin基础「十四」

  • 密封类(Sealed Classes)

Kotlin基础「十五」

  • 泛型

Kotlin基础「十六」

  • 嵌套和内部类

Kotlin基础「十七」

  • 枚举类(enum class)

Kotlin基础「十八」

  • object(对象表达式和对象声明)

Kotlin基础「十九」

  • 类型别名(type alias)

Kotlin基础「二十」

  • 内联类(Inline classes)

Kotlin基础「二十一」

  • 委托和委托属性详解

Kotlin基础「二十二」

  • Lambdas和高阶函数详解

Kotlin基础「二十三」

  • 引用的使用 :: (类引用、属性引用、函数引用、绑定引用)

Kotlin基础「二十四」

  • 注解:声明、应用、元注解

Kotlin基础「二十五」

  • 反射:KClass、KCallable、 KFunction、 KProperty

Kotlin 协程学习三部曲

Kotlin 协程实战进阶(一、筑基篇)

  • 协程的概念和原理、协程框架的基础使用、挂起函数以及挂起与恢复等

Kotlin 协程实战进阶(二、进阶篇)

  • 协程的高级用法、Flow、Channel等

Kotlin 协程实战进阶(三、原理篇)

  • 协程的底层原理:状态机,挂起与恢复,线程切换原理

Jetpack组件

Wan_Android实战开源项目

  • 大型Android项目架构:基于组件化+模块化+短视频+Kotlin+协程+Flow+Retrofit+Jetpack+MVVM架构实现WanAndroid客户端

浅谈 Android Jetpack - Navigation的架构设计

  • Navigation实战,架构设计原理剖析

Android架构灵魂组件Lifecycle的生命周期机制详解

  • Lifecycle的使用,架构设计,生命周期机制

由浅入深,ViewModel配置变更复用原理详解

  • ViewModel实战、因配置变更保存和复用机制详解

关于LiveData全面详解(附事件总线)

  • LiveData全面详解,附事件总线

ViewBinding与DataBinding

  • 视图绑定与数据双向绑定

Ⅹ进程通信 ☎️

Android系统进程间通信最重要的手段之一

Ⅺ 性能优化 🔧

性能优化是Android细分领域中最难且也是知识面涉及最深和最广的方向之一

深入研究Android启动速度优化(上)- 看完这些启动优化已经完成80%了

  • 分析应用启动流程,优化阶段与首帧定义,耗时统计的八种方式

深入研究Android启动速度优化(下)- 不敢说100%秒开,但这样做“雀食”是快

  • 常规优化方案,业务优化方案,进阶优化方案,黑科技对启动的影响,如何监控和防劣化机制的建设

最全面&详细的性能优化攻略

  • 包含内存优化、内存泄漏、绘制优化、布局优化、图片优化、APK优化、多线程优化、列表优化等

Ⅻ 优秀第三方控件 👨

图片加载:Glide

  • 优秀的图片加载库,Android使用最广泛的图片加载框架。

事件总线:EventBus

使用扩展的观察者模式实现的组件间通信框架,广播的替代者。EventBus能够简化应用组件间的通信,解耦(有效分离)事件的发送者和接收者,避免复杂和容易出错的依赖和生命周期问题,开销小,代码更优雅。

EventBus3.2详解和使用(一)

  • EventBus普通事件和粘性事件的使用

EventBus3.2详解和使用(二)

  • EventBus三要素、线程模式、优先级和AndroidEventBus的使用

EventBus3.2详解和使用(三)

  • 源码剖析EventBus内部原理

XIII NDK 🍎 (敬请期待)

JNI

XIV 拓展 🍴 (敬请期待)

热修复

Flutter

插件化

组件化

笔者有话说

在Android源码中最重要的三个类:ActivityManagerService/PackageManagerService/View,推荐大家去阅读下这部分的源码,阅读源码能提高我们今后设计架构自己代码的能力,同时也能从底层了解整个android系统的运行原理,其他一些比如主线程的消息循环、主线程如何和AMS如何跨进程交互、SystemServer进程中的各种Service的工作方式、AsyncTask的工作原理等。这些知识也是作为一个Android高级开发工程师必须掌握的,不能整天沉溺于ui和四大组件的交互,要站在更高的角度去考虑Android的有些问题。

欢迎在 Issue 中提交对本仓库的改进建议~

版权声明

  • 所有原创文章(未进行特殊标识的均属于原创) 的著作权属于 Sumiya
  • 所有译文文章(标题注明[译]的所有文章) 的原文著作权属于原作者,译文著作权属于 Sumiya

转载注意事项

除注明外,所有文章均采用 Creative Commons BY-NC-ND 4.0(自由转载-保持署名-非商用-禁止演绎)协议发布。

您可以在非商业的前提下免费转载,但同时您必须:

  • 保持文章原文,不作修改。
  • 明确署名,即至少注明 作者:Sumiya 字样以及文章的原始链接。
  • 商业用途请以邮件方式联系本人。
  • 微信公众号转载一律不授权 原创 标志。

About me

赞赏

如果这个库对您有很大帮助,您愿意支持这个项目的进一步开发和持续维护。您可以扫描下面的二维码,打赏我一颗糖果或者一杯咖啡,非常感谢您的捐赠。祝您百尺竿头更进一步!