Android 架构 4.总结
以下是Keegan小钢大神原创博客:
Android项目重构之路:架构篇
Android项目重构之路:界面篇
Android项目重构之路:实现篇
看了这几篇文章,以及下面的评论,总结一下,以便以后拓展:
1、目前这个入门架构,model layer的稳定、一致、可靠性还是有保障的,model的数据是在接口层写入的,再从API传到数据层再传到界面层,中间也不会有丢失。确切地说,model layer的稳定、一致、可靠性是受制于API的,因为这个架构的model是跟API返回的json数据模型一致的。
2、为什么要抽出一个核心层,主要目的就是为了解耦activity,这跟MVP的思想是类似的。
3、data flow也是清晰的,从界面层,到核心层,最后到接口层,一条线下来,哪里出的问题是很容易定位的。
Q1:1、接口层的返回objList我觉得是多余了,多多少少包含了业务逻辑,有obj我觉得足够了
A1:1、首先obj和objList并不是我定义的,是我们的后台人员早定义好的;当然,如果由我来定义,我会更喜欢命名为data,那样显得更明了。
结果:
{"event": "0", "msg": "success", "obj":{...}}
1.AppAction层可以按模块继续细分。
2.Parcelable的性能比Serializable好,在内存开销方面较小,所以在内存间数据传输时推荐使用Parcelable,如activity间传输数据,而Serializable可将数据持久化方便保存,所以在需要保存或网络传输数据时选择Serializable,因为android不同版本Parcelable可能不同,所以不推荐使用Parcelable进行数据持久化。
3.AsyncTask抽出
package com.lanhetech.core.user; @doney 以下是我继承的类: public abstract class NetworkTask extends AsyncTask { private CallbackListener callbackListener;
private KcuponResponse response;
private boolean isCancel = false; public NetworkTask(CallbackListener callbackListener) {
this.callbackListener = callbackListener;
} public void cancel() {
isCancel = true;
super.cancel(true);
} @Override
protected Void doInBackground(Void... params) {
response = run();
return null;
} @Override
protected void onPostExecute(Void result) {
if (callbackListener == null || response == null) {
return;
}
callbackListener.onFinish();
if (!isCancel) {
if (response.isSuccess()) {
T data = response.getObj();
if (data == null) {
data = response.getObjList();
}
callbackListener.onSuccess(data);
} else {
callbackListener.onFailure(response.getEvent(), response.getMsg());
}
}
} public abstract KcuponResponse run(); } // 调用时,代码就简单了,如下:
NetworkTask task = new NetworkTask(callbackListener) {
@Override
public KcuponResponse run() {
return api.loginByApp(phone, password, LOGIN_OS, imei);
}
};
4.每层都有自己相应的常量constance、工具类util、系统配置Config等。
5.ImageLoader应该是在UI层。
当你使用第三方库的时候,只要考虑你接入的地方即可,像ImageLoader,因为你用来加载图片的,就是UI层,其他不用怎么考虑。
如果你要自己实现图片加载,这时才需要考虑哪些放在UI层,哪些放在业务层,哪些放在数据层。
6.
Android 架构 4.总结的更多相关文章
- 一种更清晰的Android架构(转)
一种更清晰的Android架构 一种更清晰的Android架构 原文链接 : Architecting Android…The clean way? 译者 : Mr.Simple & So ...
- Android架构分析之Android消息处理机制(二)
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz Android版本号:4.4.2 在上一篇文章中我们看了一个使用Handler处理Message消息的样例,本文我们 ...
- android学习——android架构
android架构:在了解全局的情况下进行细致化的分析才能更有效的学习android的运行原理,才能更深刻的理解android开发: 1.架构图直观 2.架构详解 2.1.Linux Kernel 2 ...
- Android架构分析之使用自定义硬件抽象层(HAL)模块
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz Android版本:2.3.7_r1 Linux内核版本:android-goldfish-2.6.29 在上一篇博 ...
- Android架构设计和软硬整合完整训练
Android架构设计和软硬整合完整训练 Android架构设计和软硬整合完整训练:HAL&Framework&Native Service&Android Service&a ...
- [Android 泥水匠] Android基础 之一:浅谈Android架构到HelloWorld案例的剖析
作者:泥沙砖瓦浆木匠网站:http://blog.csdn.net/jeffli1993个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节. 交流QQ群:[编程之美 365234583] ...
- Android架构初探
#一 背景点评美团合并之后,业务需要整合,我们部门的几条业务需要往美团平台迁移,为了降低迁移成本,开发和维护成本,以及将来可能要做的单元测试,需要对架构进行相应的调整.之前的代码都堆在Activity ...
- 一个Android 架构师的成长之路
前言 总所周知,当下流行的编程语言有Java.PHP.C.C++.Python.Go等.其中,稳坐榜首的仍然是Java编程语言,且在以面向对象思想占主导的应用开发中,Java往往成为其代名词.Java ...
- Android架构组件——ViewModel
概述 ViewModel,从字面上理解的话,它肯定是跟视图(View)以及数据(Model)相关的.正像它字面意思一样,它是负责准备和管理和UI组件(Fragment/Activity)相关的数据类, ...
- Android架构(一)MVP架构在Android中的实践
Android架构(一)MVP架构在Android中的实践 https://www.300168.com/yidong/show-2790.html 核心提示:为什么要重视程序的架构设计 对程序进 ...
随机推荐
- POJ1182 食物链---(经典种类并查集)
题目链接:http://poj.org/problem?id=1182 食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submission ...
- SSM初步整合一
SSM(spring+springmvc+mybatis)初步整合一配置步骤: 步骤一.导入所需jar包 步骤二 .配置web.xml文件 <?xml version="1.0&quo ...
- face++ API接口调用
人脸识别 首先我想描述一下,在学校的时候一直好奇人脸识别与人脸检测这个技术,之后做了很多实验,曾经使用过很多简单的算法来做人脸相似度对比,比如:夹角余弦算法.判断两个矩阵之间对应位置元素相同来做统计. ...
- javascript的阻塞机制
javascript的阻塞机制 浏览器在执行javascript代码时,不能同时做其它事情,当遇到javascript时,浏览器会下载js文件,解析并执行该文件,而在这期间页面的渲染是完全被阻塞的,因 ...
- 160多条Windows 7 “运行”命令
160多条Windows 7 “运行”命令: 删除或更改应用程序 = control appwiz.cpl 添加设备 = devicepairingwizard 蓝牙文件传输 = fsquirt ...
- Python小程序之sed命令替换
需求: 编写sed命令脚本 代码如下 # Author:Lee Sir import sys,os des_file = r'E:\StartPython\day3\test.txt' des_fil ...
- Linux中生成Core Dump系统异常信息记录文件的教程
Linux中生成Core Dump系统异常信息记录文件的教程 http://www.jb51.net/LINUXjishu/473351.html
- Google Breakpad 之一,跨平台crash 处理上报系统简介
Google Breakpad 之一,跨平台crash 处理上报系统简介 http://blog.csdn.net/wpc320/article/details/8290501 Google Brea ...
- 【bzoj2242】计算器
#include<bits/stdc++.h> #define inf 1000000000 using namespace std; typedef long long ll; ?a:g ...
- JSTL c:url
c:url 标签 jstl 实例代码和用法. <c:url>标记格式化成一个字符串格式的URL,并将其存储到变量中.这个标签会在必要时自动执行URL重写. var属性指定的变量将包 ...