Android知识点整理(二)

《Android高级进阶》学习笔记
第二篇 系统架构篇


第16章: MVP模式及其在Android中的实践

1、MVP的基本概念

  1. View:视图层,包含界面相关功能,如Activity、Frangment、View、Adapter等,该层专注于用户的交互。

  2. Presenter层:逻辑控制层,充当中间人的角色,用来隔离View层和Model层。例如,接收View层的网络数据加载请求,并分发给对应的Model处理,同时监听Model层的处理结果,最终将其反馈给View层,从而实现界面的刷新。

  3. Model层:封装各种数据来源,例如远程网络数据、本地数据库数据等,对Presenter层提供简单易用的接口。

2、MVP与MVC的区别

MVP模式:
MVP模式关系图

MVC模式:
MVC模式关系图

第17章: MVVM模式及Android DataBinding实战

  MVVM(Model-View-ViewModel)相比MVP,将Presenter改为了ViewModel,同时实现View和ViewModel的双向绑定。View层的变化会自动导致ViewModel发生变化,ViewModel的数据变化也会自动实现View的刷新,开发者可以不用直接处理View和数据的更新操作,MVVM框架会完成这一切。

MVVM模式:
MVVM模式关系图

  在Google I/O 2015大会上,Android开发团队发布了官方的MVVM模式支持的函数库Data Binding Library。

第18章:观察者模式的拓展:事件总线

  事件总线是消息(事件)流动的管道,不同组件和模块之间的消息传递都是通过总线来实现,组件与组件、模块与模块之间不直接进行通信。简而言之,事件总线就是用来简化Android应用中组件或者模块间的通信,从而实现模块间解耦的目的。

1、基本原理

  • 事件Event:一个普通的POJO类(Plain Ordinary Java Object),只包含数据,不包含对数据的操作。事件有两种类型:普通事件和粘滞事件,粘滞事件的特点是在事件发布后,订阅者才开始订阅该类型事件,那么它依然可以收到这个事件,而普通事件是收不到的。

  • 订阅者Subscriber:订阅某种类型事件的对象。订阅者可以引入优先级的概念。

  • 发布者Publisher:事件的源头,发布某种类型事件的对象。

  • 总线EventBus:负责订阅者、事件等信息的存储,同时处理事件的流动和分发。通过总线,订阅者和发布者是解耦的。

事件总线的总体架构

2、与Android BroadcastReceiver及观察者模式的区别

  • Android的BroadcastReceiver更适合用于监听Android系统级的广播时间,例如网络状态变化、电量变化等。对于业务相关的事件变化,使用BroadcastReceiver太重量级了。

  • 观察者模式用于简单的事件监听没有问题,但如果APP全局都使用观察者模式来解决组件和模块间的通信,那么可能会造成接口膨胀的问题。观察者模式要求开发者自己实现事件的生产、分发和处理,需要进行很好的设计。同时,观察者模式不支持粘滞事件,不支持事件优先级等特性。当然,性能上来说,观察者模式要比事件总线性能高,毕竟它不需要处理很多其他的特性。

  • 事件总线使用起来很方便,但只有在组件或者模块间通信时才使用它。

第19章:书写简洁规范的代码

第20章:基于开源项目搭建属于自己的技术堆栈

1、APP的整体架构

  • 应用层:专注于行业领域的实现,例如金融、支付、地图导航、社交等,它直接面向用户,是用户对产品的第一层感知。

  • 基础框架层:专注于技术领域的实现,提供APP公有的特性。它是用户对产品的第二次感知,例如性能、稳定性等。

2、日志记录

  1. Logger
  2. LogUtils
  3. timber

3、JSON解析

  1. gson:Google出品
  2. jackson:针对Java语言,一种通用的JSON函数库
  3. Fastjson:阿里巴巴出品,号称是目前Java语言中最快的JSON库。有专门的Android版本:fastjson.android
  4. LoganSquare

4、数据库操作

  1. greenDAO:轻量级且快速的ORM框架,专门为Android高度优化和定制。
  2. Realm:一个全新的移动数据库引擎。

5、网络通信

  1. android-async-http
  2. OkHttp
  3. Volley:Google出品
  4. Retrofit

6、图片缓存和显示

一般的图片缓存都设置两级缓存:内存缓存磁盘缓存

  1. BitmapFun
  2. Picasso
  3. Glide
  4. Fresco:Facebook出品,具有三级缓存:两级内存缓存和一级磁盘缓存,可以极大降低APP出现OOM的概率。
  5. Android-Universal-Image-Loader

猜你喜欢

转载自blog.csdn.net/michael_f2008/article/details/77934473