App 研发录、架构设计、Crash分析和竞品技术分析------读书笔记(第一章)
来源:互联网 发布:域名com cn net的区别 编辑:程序博客网 时间:2024/05/20 19:17
第一章:重构
1、要新建一个AndroidLib类库,将业务无关的逻辑转移到AndroidLib,一般来说包含五在部分
- activity:存放的是与业务无头的activity基类,
- net:存放网络请求相关的
cache:存放缓存数据和图片相关的处理
-ui:存放的是自定义控件
-util:存在工具类
2、为主项目的分类就根据情况来activity:存在所有activity
- adapter:存在所有adapter
- utils:等
3、为activity重新定义新的生命周期
学过设计模式的人都知道,一个类或者是方法只做一件事,需要在BaseActivity里面定义一些抽象方法,比如public abstract void initView,public abstract void loadData(),在onCreate里面调用调用这两个方法,所有的子activity都必须继承自BaseActivity
4、统一事件处理,例如统一的使用switch,case
5、实体化编程,在网络请求中使用fastjson或者是Gson来进行实体映射,在使用这两个时要注意,如果是代码混淆了,需要加这两个
keepattributes Signature // 避免混淆泛型keepattributes *Annotation* // 不要混淆注解
6、在activity之间传递数据要避免使用全局变量,使用Intent来进行传递数据,因为使用全局变量过后,App一旦被切换到后台,当手机内存不足的时候,就会回收这些全局变量,从而当App再次回到前台地,如果再继续使用全局变量就会造成空指针,如果必须要使用全局变量的化一定要把它们序列化到本地。
7、我们在使用Adapter的时候要定义一个adpater的模板,这样就规范化了,每个Adapter都有这四个方法getCount()、getItem()、getItemId()、getView()
8、类型安全转换函数,例如下面的代码;
int result = Integer.valueOf(obj.toString());
一旦obj这个对象为空,那么上面直接会崩溃,因为obj是从服务器上取出来的,我们不能保证服务器上数据不能为空造成的,比较好的做法是是我们自己写一个类型安全转换的函数
public final static int convertToInt(Object value, int defaultValue) { if (value == null || "".equals(value.toString().trim())) { return defaultValue; } try { return Integer.valueOf(value.toString()); } catch (Exception e) { try { return Double.valueOf(value.toString()).intValue(); } catch (Exception e1) { return defaultValue; } } }
其实是还有对于这种substring这种start和end这种也需要安全的考虑
首先、不能让App直接崩溃,应该在解析json时外面包一层try…..catch…语句,并截取在catch里面进行处理
- App 研发录、架构设计、Crash分析和竞品技术分析------读书笔记(第一章)
- App 研发录、架构设计、Crash分析和竞品技术分析------读书笔记(第二章)
- App 研发录、架构设计、Crash分析和竞品技术分析------读书笔记(第三章)
- App 研发录、架构设计、Crash分析和竞品技术分析------读书笔记(第四章)
- <<App研发录:架构设计、Crash分析和竞品技术分析>>读书笔记
- App研发录 架构设计 Crash分析和App竞品技术分析
- App研发录:架构设计、Crash分析和竞品技术分析——互动出版网
- ProGuard介绍——《App研发录—架构设计,Crash分析和竞品技术分析》
- Android异常整理——《App研发录—架构设计,Crash分析和竞品技术分析》
- [读书笔记]《APP研发录》第一章
- 读书笔记----App研发录 第一章 重构
- 读书笔记App研发录--数据缓存设计
- 《App研发录》读书笔记
- app研发录第一章笔记
- 读书笔记-App研发录-第7章-ProGuard技术详解
- APP研发录读书笔记:网络底层框架设计
- 架构设计之APP研发录学习笔记
- 《APP研发录》读书笔记(2、crash异常收集已统计)
- bzoj2001【HNOI2010】City 城市建设
- Leetcode 73. Set Matrix Zeroes 矩阵置零 解题报告
- TCP/IP 之 大明王朝邮差
- 工具篇《总》
- Linux中搜索命令简记
- App 研发录、架构设计、Crash分析和竞品技术分析------读书笔记(第一章)
- java FirstTest
- 1004 zxa and xor
- DA1458x使用之第二篇——PWM
- git check
- MySQL error 1042解决
- ImageIcon icon 相对路径设置
- 运用std::string 实现split功能
- List和Set集合中iterator的fail-fast特性之区别