##第一章:APP框架设计和重构
-
重新规划Android的项目结构,合理的使用项目间的依赖,将项目中和业务无关联的类封装到一个AndroidLib项目中作为依赖。
-
合理的进行分包处理,可以依据功能模块或者是类的类型来分类管理。
-
不直接使用Activity,而是在基类中封装之后,之后的Activity统一继承自BaseActivity,同时实现在BaseActivity中定义的一些抽象方法。
-
统一事件编程模型,可以选择在onClick中通过switch/case语句来进行事件处理,或者是在初始化控件的时候就直接绑定事件监听,但在一个项目中要保持一致性。
-
实体化编程:(关于实体生成器网络上有很多在线生成网站)
-
在网络请求中使用实体,而不是直接把得到的Json作为字典来查询
-
在页面跳转中使用实体,而不是通过全局变量来传递数据
-
规范Adapter模板,并通过ViewHolder来进行布局重用
-
保证类型转换时的安全,对于网络请求回来的数据进行检验。
##第二章:底层网络框架设计
-
书中讲的是推荐通过ThreadPoolExecutor+Runnable+Handler来自定义一个网络请求的底层库。但是现在基本上还是使用主流的开源库比较稳定和方便。但是同时也需要我们自己对这些开源库做一些封装。
-
底层的一些优化操作:
-
可以将onFail放在基类中进行统一的处理,这样就可以避免每次都重写相同的onFail逻辑;
-
对于URLManager可以在应用启动时就加载到内存中,避免频繁的读取;
-
进度条ProgressBar也需要放到基类中进行统一管理;
-
App缓存设计:
-
我们可以将请求的url的hash值作为key将请求到的数据进行缓存,这样就可以减少网络请求的次数,同时为其设置有效时长,这样就既保证了网络请求的减少,又保证了内容的时效性
-
要在界面中提供主动刷新的机制,或者是刷新按钮,或者是下拉刷新等
-
MockServer:可以在客户端开发过程中自己定义一个MockService来模拟网络请求到的数据,这样可以降低对于后台开发进度的依赖,通过定期的和后台开发人员交流,不断的修正MockService
-
用户登录:首先肯定需要一个全局的用户管理类,当用户登录上之后就需要将登录的用户信息保存在其中,同时标明用户已处于登录状态。
-
用户登录分为两大类情况:
- 第一次登录,在登录界面中正常登录之后跳转到首页或者是个人中心界面**(直接正常登录流程即可)**
- 在页面A中,但是处于未登录状态,下一步操作需要跳转到B页面或者是处于登录状态才能操作,这时候就需要先跳转到登录界面成功登录,然后在转回A页面来继续操作。(可以通过startActivityForResult来启动登录界面,在页面A中通过onActivityResult处理结果) -
APP免登陆设计:APP免登陆就是用户在第一次登录之后的一段时间内可以不用再次重复登录,一般采用的设计就是token机制(令牌机制)。在第一次成功登录之后服务器端会返回一个用户身份的token字符串,同时还有token的有效时长,我们可以在启动页面通过判断token是否存在,是否处于有效期来决定是否跳转到登录界面。
-
关于免登陆设计更高阶的是在已经登录之后,每次启动app时更新token的有效时长,这样就可以保证除非主动退出,否则一直处于登录状态(类似于QQ那样)
-
用户登录的token有效期超时的统一处理,当token超过有效期时需要在启动页中进行判断,同时在进行网络访问时返回值中也需要定义一个token已失效的字段,这样当token失效时我们可以统一跳转到登录界面。