response标准格式:

  1. {
  2. "isError":false,
  3. "errorType": 0,
  4. "errorMessage": "网络异常",
  5. "result": ""
  6. }
  1. {
  2. "errorMessage" : "网络异常",
  3. "errorType" : 0,
  4. "isError" : false,
  5. "result" : {
  6. "cinemaID" : 1,
  7. "cinemaName" : "星美"
  8. }
  9. }
 
 
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. ASP.Net MVC C#画图 页面调用

    /////C# 后台代码 public FileContentResult PieChart()        {            TransactionStatisticsBLL bll = ...

  2. OpenCV示例学习笔记(1)-contours2.cpp-通过findContours 函数实现轮廓提取

    这个系列的目的是通过对OpenCV示例,进一步了解OpenCV函数的使用,不涉及具体原理. 示例代码地址:http://docs.opencv.org/3.0.0/examples.html(安装op ...

  3. Java 编译打包命令

    背景 编译 打包 解压 运行 参考 背景 我们有的时候总是要使用将自己写的工程编译成 class 文件,同时打包成 jar,虽然有各种工具可以帮助我们,但是毕竟掌握使用 java 本来的命令去做这些更 ...

  4. 开发团队在TFS中使用Git Repository (一)

    在研发团队中,代码版本管理是最为基础的必要工具.个人使用过的版本管理工具有SVN.VSS.ClearCase.TFS.Git,从团队的角度和使用角度来说,个人倾向于与使用TFS作为团队的基础工具.首先 ...

  5. XAF-BI.Dashboard模块概述 web/win

    Dashboard模块介绍了在ASP.NET XAF 和 WinForms 应用程序中简单的集成 DevExpress Dashboard控件的方法. 其实不仅仅是控件,利用了现有的XAF数据模型,这 ...

  6. codevs1993草地排水(最大流)

    最近学了最大流,于是去codevs找了几道最大流裸题(这是我第一次写网络流). 题目大意:求一个图的最大流(就是这样的裸题) 第一次A网络流的题,发个博客纪念一下. var n,m,i,j,k,h,t ...

  7. qdoc 简介

    Qdoc 介绍 Qdoc是开发者用于在软件工程中生成文档的一个工具.它从工程的源文件中提取qdoc类型注释,并以html页面或者DITA XML文档的形式格式化到文件中.Qdoc在.cpp和.qdoc ...

  8. js学习笔记1

    就是调用对象是一个Array,对Array类型增加了一个原型写法的函数,一般写一些扩展时经常用.比如判断一个元素是否在数组中之类的 Array.prototype.inArray=function(v ...

  9. php 常量定义

    php常量定义及取值  常量在定义时赋值:  不能变 :不能销毁: 具有超全局作用于:常量只能储存标量数据(字符 整型 浮点 ): <?php define("hello", ...

  10. 【转】gcc/g++ 如何支持c11 / c++11标准编译

     如果用命令 g++ -g -Wall main.cpp  编译以下代码 : 1 2 3 4 5 6 7 8 9 10 11 12 /*     file : main.cpp */ #include ...