response标准格式:

{
"isError":false,
"errorType": 0,
"errorMessage": "网络异常",
"result": ""
}
{
"errorMessage" : "网络异常",
"errorType" : 0,
"isError" : false,
"result" : {
"cinemaID" : 1,
"cinemaName" : "星美"
}
}
 
 
AnsyTask的缺点:
  1. 不能灵活控制其内部的线程池。
  2. 没有暴露取消请求的方法,导致任务队列阻塞。
 
使用线程池+Runnable+Handler的方式:
将成功失败的回调放在基类里面,对公用的处理进行封装,其实常用的网络框架比如Volley,okHttp,Ansy_http_client都可以这样去处理。如果有特殊情况,则可以通过重写基类里面的回调来进行特殊处理。还有就是加载网络数据的对话框等也可以在基类通过方法来进行显示,隐藏控制,比如在onBefore()里面显示,在onError()或者onFinish()以及onResponse()里面讲对话框进行隐藏。
 
App数据缓存:
  1. 这方面这本书应该讲的是接口优化和网络优化这方面的知识:
  2. 一个APP页面的数据通过一个接口来进行返回,没必要设置多个接口来进行获取。
  3. 进行返回数据的缓存处理(只针对[get]获取的数据,不针对[post]修改数据)。当然在做缓存之前要考虑是否当前业务适合缓存,比如有些即时行要求比较高的操作或者页面展示。
  4. 缓存地址一般选择为sd卡缓存。
  5. 底层封装的时候根据url作为key来判断缓存是否存在,如果存在,返回缓存数据,否则根据url去进行请求。
 
App自动登录功能实现:
  1. 不要本地保存用户名,密码,或者如果要保存,一定要进行加密来处理。
  2. 利用cookie(token)来作为用户唯一性的标示。(我们项目就是这么干的)。
    1. 用户相关的,用cookie,无关的,服务器可以控制无需校验cookie。
    2. 注销功能,清除本地cookie(token)。
    3. cookie过期处理,进入登录界面,返回前面的页面重新操作。(还是需要在底层回调的地方进行处理)
 
防止黑客刷库:
利用验证码来进行防刷,如果同一IP频繁访问同一接口,在登录界面有输入验证码,或者弹出输入验证码的浮窗。
 
时间校准 ,开启Gzip压缩:
更新本地时间和服务器时间差的方法:
https://github.com/icodeu/AppProgrammingSource/blob/master/2.5.2%20%E6%97%B6%E9%97%B4%E6%A0%A1%E5%87%86/AndroidLib/src/com/infrastructure/net/HttpRequest.java
 

第二章App框架设计与重构的更多相关文章

  1. jQuery系列 第二章 jQuery框架使用准备

    第二章 jQuery框架使用准备 2.1 jQuery框架和JavaScript加载模式对比 jQuery框架的加载模式 <script> window.onload = function ...

  2. Spring学习指南-第二章-Spring框架基础(完)

    第二章 Spring框架基础 面向接口编程的设计方法 ​ 在上一章中,我们看到了一个依赖于其他类的POJO类包含了对其依赖项的具体类的引用.例如,FixedDepositController 类包含 ...

  3. 第二章 Rest框架 Nancy

    正如你看到的,Nancy有两个主要用途. 其中第一项是作为一种通用的基于 REST 框架,可替代 ASP.NET Web API 或其他Rest工具包. 默认情况下,Nancy提供一流的路由和内容协商 ...

  4. [Learn AF3]第二章 App Framework 3.0的组件View——AF3的驱动引擎

    View:af3中的驱动引擎   组件名称:View     使用说明:按照官方的说法,view组件是af3的“驱动引擎(driving force)”,view是af3应用的基础,一个app中可以包 ...

  5. NancyFX 第二章 Rest框架

    正如你看到的,Nancy有两个主要用途. 其中第一项是作为一种通用的基于 REST 框架,可替代 ASP.NET Web API 或其他Rest工具包. 默认情况下,Nancy提供一流的路由和内容协商 ...

  6. 第二章 jQuery框架使用准备

    window常用属性: History:有关客户访问过的URL的信息 Location: 有关当前url的信息 常用方法: Confirm()将弹出一个确认对话框 open()在页面上弹出一个新的浏览 ...

  7. [翻译]Spring框架参考文档(V4.3.3)-第二章Spring框架介绍 2.1 2.2 翻译--2.3待继续

    英文链接:http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/overview.ht ...

  8. 深入浅出ExtJS 第二章 Ext框架基础

    2.1 面向对象的基础架构(对象模型) 2.1.1 创建类 >.定义一个类: Ext.define('demo.Demo',{ name:'Lingo', hello:function () { ...

  9. [Learn AF3]第三章 App Framework 3组件之Panel:afui的核心

    Panel,afui的核心组件 组件名称:Panel     使用说明:按照官方的说法,panel组件是af3的“核心(heart of the ui)”,panel用于构造应用中独立的内容展示区域, ...

随机推荐

  1. CentOS6.5编译安装Python-2.7

    zlib.x86_64 * yum install zlib.x86_64 openssl-devel.x86_64 * yum install openssl-devel.x86_64 Python ...

  2. Mac下使用charles遇到的问题以及解决办法

    最近使用上了Charles,因为之前一直使用Fidder,所以还是碰到了一些问题,这里记录一下. 如何安装破解版 打开charles后,发现访问但是抓不到包 抓取HTTPS的接口,看response是 ...

  3. javascript练习题(3):基础字符串运算

    用两种方法实现下列问题! 1. 把一个字符串转化为驼峰写法 需求:margin-left=>marginLeft 思路一:split 把它转化为一个数组然后修改内容 function conve ...

  4. HTTP协议----ETag

    Etag是URL的Entity Tag,用于标示URL对象是否改变,区分不同语言和Session等等.具体内部含义是服务器控制的,就像Cookie那样. 服务器首先产生ETag,服务器可在稍后使用它来 ...

  5. Angularjs通过$http与服务器通信

    angular是一个前端框架,实现了可交互式的页面,但是对于一个web应用,页面上进行展示的数据从哪里来,肯定需要服务端进行支持,那么angular是如何同服务端进行交互的呢? $http angul ...

  6. 关于AVL实现的代码记录

    试题集合: https://www.patest.cn/contests/pat-a-practise/1064 https://www.patest.cn/contests/pat-a-practi ...

  7. 正则表达式之 match , findall, sub,subn

    #正则表达式之 match以及分组 import re #无分组 origin = "hello alex bcd alex lge alex avd 19" r = re.mat ...

  8. Defraggler(磁盘整理软件) V2.21.993 绿色版

    软件名称: Defraggler(磁盘整理软件) 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win 32位/64位 软件大小: 5.0MB 图片预览: 软件简介: Defraggler ...

  9. 【IE6的疯狂之十一】CSS的优先级及!important在IE6下的BUG

    一 css的优先级 今天有人跟我说css hack中用!important来区分ie6,因为ie6不支持!important,是的在很早以前我也是用过这种方法写hack,但是后来就基本不用了.本来我对 ...

  10. HDU 5887 Herbs Gathering

    背包,$map$,优化. 和普通背包一样,$map$加一个$erase$优化一下就可以跑的很快了. #pragma comment(linker, "/STACK:1024000000,10 ...