您的位置:首页 > 移动开发

App 研发录、架构设计、Crash分析和竞品技术分析------读书笔记(第一章)

2016-05-17 23:53 549 查看
第一章:重构

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里面进行处理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: