Android面试速查手册:Android常用开源框架原理(1),2024年最新面试 总结

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注Android)
img

正文

线程池用于线程调度、复用 & 执行任务;Handler 用于异步通信;

其内部封装了2个线程池 + 1个Handler,具体介绍如下:

在这里插入图片描述

4. EventBus

======================================================================

在这里插入图片描述

使用发布/订阅事件总线框架,基于观察者模式,将事件的接收者和发送者分开,简化了组件之间的通信,使用简单、效率高、体积小。

使用APT:Annotation Processing Tools。

5. Glide

===================================================================

  1. 链式调用

  2. 生命周期感知

创建一个透明的 RequestManagerFragment 加入到FragmentManager 之中

通过添加的这个 Fragment 感知 Activity 、Fragment 的生命周期。

添加到 Activity的 Fragment 会跟随Activity的生命周期。

  1. 缓存

Glide缓存每一种大小的图片,空间换时间,而Picasso无论目标控件多大都完全加载整张图片;

6. LiveData

======================================================================

LiveData的特点:

1)采用观察者模式,类比RxJava,数据发生改变,可以自动回调(比如更新UI)。

2)不需要手动处理生命周期,不会因为Activity的销毁重建而丢失数据。

LifecycleBoundObserver wrapper = new LifecycleBoundObserver(owner, observer);

//把wrapper 与Activity/Fragment的生命周期,建立关系,

//当UI的生命周期发生变化的时候,就会去回调wrapper中的 onStateChanged

owner.getLifecycle().addObserver(wrapper);

3)不会出现内存泄漏。

4)不需要手动取消订阅,Activity在非活跃状态下(pause、stop、destroy之后)不会收到数据更新信息。

在这里插入图片描述

7. LeakCanary

========================================================================

在一个Activity执行完onDestroy()之后,将它放入WeakReference中,然后将这个WeakReference类型的Activity对象与ReferenceQueque关联。这时再从ReferenceQueque中查看是否有没有该对象,如果没有,执行gc,再次查看,还是没有的话则判断发生内存泄露了。最后用HAHA这个开源库去分析dump之后的heap内存。

Reference引用的对象被回收时,Reference 对象将被添加到 ReferenceQueue中,前提是构造 Reference 时,参数中有 ReferenceQueue。

Object obj = new Object();

ReferenceQueue queue = new ReferenceQueue<>();

WeakedReference r = new WeakedReference(ojb, queue);

如果 obj 对象被回收了,那么 queue 将添加 r,那么我们可以查找队列,如果有r,则证明 obj 对象被回收了,监控完成。

8. ButterKnife

=========================================================================

1:编写Annotation,通过field.getAnnotation反射方式找到Annotation里面的值;

2:通过Annotation Processing Tool:

①.编译期间通过反射扫描Java代码中所有的ButterKnife注解@Bind、@OnClick、@OnItemClicked等

②.当它发现一个类中含有任何一个注解时,ButterKnifeProcessor会帮你生成一个Java类,名字类似$$ViewBinder,这个新生成的类实现了ViewBinder接口

③.这个ViewBinder类中包含了所有对应的代码,比如@Bind注解对应findViewById(), @OnClick对应了view.setOnClickListener()等等

④.最后当Activity启动ButterKnife.bind(this)执行时,ButterKnife会去加载对应的ViewBinder类调用它们的bind()方法

9. OkHttp

====================================================================

在这里插入图片描述

10.Retrofit2

======================================================================

有容乃大,可扩展性强,底层网络请求集成了Okhttp,异步处理可集成RxJava,内容解析可集成Gson,Jackson等。

全面支持Restful请求,并且通过注解的方式,支持链式调用,使用简洁方便。

精妙的源码设计模式,内部层次分工明确,解耦性强。

Retrofit就是一个定义接口然后对OKHttp的一个封装,事实上网络请求还是在OKHttp里进行。利用注解和参数利用动态代理来替使用者生成网络请求的Request和Call,来完成网络请求的一个框架。

1、构建者模式

建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。

使用Builder内部类,通过链式调用来完成初始化。让每一个配置变得清晰。

2、工厂方法

定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。CallAdapter的get方法使用工厂模式实现了不同平台的调用。例如RxJavaCallAdapter的get就返回了Observer。

3、外观模式

外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。

这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。

Retrofit里面封装了很多类,其实使用者并不需要知道具体是什么,只要通过Retrofit来和他们进行交互就行了。

4、策略模式

在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。

其实就是将我们的业务逻辑分成不同的策略,使用时可以进行替换即可。

CallAdapter其实就是一个策略,具体实现的策略的方法由子类实现。例如RxJavaCallAdapter就是一种策略,要替换成别的Adapter也可以,这就是策略模式。

5、适配器模式

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。

适配器模式可以说是一种中间件,将不同的平台上的网络请求封装成一类,OKHttpCall就是这样做的。

6、观察者模式

当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。

CallBack作为观察者观察OKHttpCall,根据执行的不同做出反应。

11. RxJava

总结:

各行各样都会淘汰一些能力差的,不仅仅是IT这个行业,所以,不要被程序猿是吃青春饭等等这类话题所吓倒,也不要觉得,找到一份工作,就享受安逸的生活,你在安逸的同时,别人正在奋力的向前跑,这样与别人的差距也就会越来越遥远,加油,希望,我们每一个人,成为更好的自己。

  • BAT大厂面试题、独家面试工具包,

  • 资料包括 数据结构、Kotlin、计算机网络、Framework源码、数据结构与算法、小程序、NDK、Flutter

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注Android)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注Android)
[外链图片转存中…(img-GsYCOvvH-1713462294218)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值