设计模式

1.工厂设计模式

简单工厂模式

适用场景:

  • 工厂类负责创建的对象较少;
  • 客户端只需要传入工厂类的参数,对于如何创建对象的逻辑不需要关心。

优点:

  • 只需要传入一个正确的参数,就可以获取你所需要的对象,无须知道其创建的细节。

缺点:

  • 不易于扩展过于复杂的产品结构。

手写实现ARouter

组件化

可以理解为解耦复杂系统时将多个功能模块拆分,重组的过程。在Android工程中,表现就是把app按照其业务的不同,划分为不同的Module。举例一点,比如我在开发58同城时,具有很多个业务,房产,招聘,新车,每一个业务线都是独立的,可以单独运行,相互之间并不依赖,但是在平台中,可以做到横向的互相跳转。所以组件化有点有很多:

  • 1.各组件只关系自己功能开发,模块内代码高度聚合,只负责一项任务;
  • 2.业务之间不干扰,提升协作的效率;
  • 3.业务组件可插拔,比如招聘,可以随时集成到58同镇平台;
  • 4.业务之间不直接依赖,各个业务更独立,降低了耦合;
  • 5.可以单独编译,加快编译速度,提高开发效率;

Glide图片加载框架原理

什么是Glide

Glide是一个快速高效的图片加载库(Android),性能高,流式API的语法特点。

特点

  • 1.可配置高,自适应度高;
  • 2.支持多种数据源,本地,网络,assets,gif再glide中都是支持的;
  • 3.高效缓存,支持memory和disk图片缓存,默认使用二级缓存;
  • 4.具有和AF同步的生命周期;
  • 5.高效处理Bitmap:使用Bitmap pool复用Bitmap,享元设计模式;
  • 6.图片接在过程可以监听。

SPI原理解析

前言

SPI全称Service Provider Interface,是Java提供的一种动态服务发现机制。通过SPI机制,我们可以直接跨模块查找到想要的接口实现类,从而避免不必要的模块间依赖,降低模块之间的耦合性。这对Android组件间通信非常重要的意义。试想一下如果有一个组件能提供这样一种能力,我们的组件通信是否会变得很容易: 通过一个接口,我可以很容易的查找到这个接口在任意模块下的任意一个或多个实现类的对象.

SharedPreferences+MMAP+MMKV数据持久化原理解析

SharedPreferences

介绍

  • SharedPreferences(以下统称为sp)是Android提供的数据持久化的一种手段,适合单进程、小批量的数据存储与访问。
  • 由于sharedPreferences是基于xml文件实现的,所有持久化数据都是一次性加载,如果数据过大是不适合采用SP存放。
  • 实际上是用xml文件存放数据,文件存保存放在/data/data//shared_prefs/

ViewModel源码解析

概览

ViewModel 类旨在以注重生命周期的方式存储和管理界面相关的数据。ViewModel 类让数据可在发生屏幕旋转等配置更改后继续留存。
ViewModel 对象存在的时间范围是获取 ViewModel 时传递给 ViewModelProvider 的 Lifecycle。ViewModel 将一直留在内存中,直到限定其存在时间范围的 Lifecycle 永久消失:对于 activity,是在 activity 完成时;而对于 fragment,是在 fragment 分离时。