Andorid项目架构篇

觉得自己的项目架构不够好用,来学习下Google出的andorid 架构蓝图,项目地址:

http:// https://github.com/googlesamples/android-architecture/blob/master/README.md

Andorid项目架构篇_第1张图片

里面的demo真不少,最单纯的mvp架构,使用了Clean 架构的mvp,使用了dagger,rxjava等依赖的mvp和mvvm数据绑定架构等等。(等着我来一一解锁吧,啊哈哈哈哈)

Andorid项目架构篇_第2张图片

一.start one by one, 首先看最简单的 todo-mvp

todo-mvp是一个简单的MVP架构,没有使用任何架构框架,也是该项目中其他demo的基石,可以用作对比参考其他demo的变化。

需要的准备

开始前,先阅读项目中的 README 文件。

需要了解什么是MVP,参考链接 -> https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93presenter(打不开)

项目中使用到的依赖库:

  • Common Android support libraries  安卓兼容库,向下兼容或者其他功能
  • Android Testing Support Library   UI测试框架,包含 Espresso, AndroidJUnitRunner.
  • Mockito Mocking框架,用来实现单元测试
  • Mockito Google提供的一组Java核心库,常用于Android apps.

(连最简单的demo中,都有UI测试和单元测试依赖啊,我也得用起来,提高代码的稳定性)

设计app

所有Android Blueprints app 的app是一个简单的待办事项类型的应用程序,其中都包含相同的基础功能。App由4个页面组成

  • Tasks - Used to manage a list of tasks.
  • TaskDetail - Used to read or delete a task.
  • AddEditTask - Used to create or edit tasks.
  • Statistics - Displays statistics related to tasks.

每个页面实现下面的类或接口

  • A contract class which defines the connection between the view and the presenter.
  • An Activity which creates fragments and presenters.
  • A Fragment which implements the view interface.
  • A presenter which implements the presenter interface in the corresponding contract.

Presenter主要负责处理一个特定功能的业务逻辑,与之相对应的view处理Android UI层的工作;view 层几乎不包含逻辑,它将presenter的指令转化为UI 行为,并接收用户的行为后传递给Presenter。

(contract类定义view和presenter之间的联系,像一个协议类,自己写没用过类似contract的东西,好奇,写的啥)

实现app

不同版本app使用不同的方法去实现同样的功能,便于展示和对比架构设计的不同。例如,本版本使用了下面方式实现:

  • demo使用product flavors替代module在编译期,在人工或自动化测试方面提供假数据
  • 使用callbacks回调处理异步任务
  • 使用Room存储数据到本地SQLite数据库

同时注意下面的说明,本项目使用fragment有2个原因:

  •  activities 和 fragments的使用都是考虑更好地分离关注点从而促进MVP的实现。在这个app的版本中,Activity 是一个全局的控制器,生成并连接views 和 presenters。
  • 使用fragments 支持平板布局或具有多个视图的UI屏幕

项目中有一些单元测试包括presenters,仓库,数据源等,也有一些UI 测试,依赖一些假数据并且是通过依赖注入来提供。

更过通过依赖注入来方便测试的信息,看 Leveraging product flavors in Android Studio for hermetic testing。

https://android-developers.googleblog.com/2015/12/leveraging-product-flavors-in-android.html

维护app

为了方便和没有使用特定架构的传统项目或者与该项目的其他版本app进行对比,下面统计了本demo的代码行数。

Andorid项目架构篇_第3张图片

好了,把demo拉下来,跑起来,看看吧!地址:  https://github.com/googlesamples/android-architecture/tree/todo-mvp/

你可能感兴趣的:(Android技术学习)