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来进行实体映射,在使用这两个时要注意,如果是代码混淆了,需要加这两个
6、在activity之间传递数据要避免使用全局变量,使用Intent来进行传递数据,因为使用全局变量过后,App一旦被切换到后台,当手机内存不足的时候,就会回收这些全局变量,从而当App再次回到前台地,如果再继续使用全局变量就会造成空指针,如果必须要使用全局变量的化一定要把它们序列化到本地。
7、我们在使用Adapter的时候要定义一个adpater的模板,这样就规范化了,每个Adapter都有这四个方法getCount()、getItem()、getItemId()、getView()
8、类型安全转换函数,例如下面的代码;
int result = Integer.valueOf(obj.toString());
一旦obj这个对象为空,那么上面直接会崩溃,因为obj是从服务器上取出来的,我们不能保证服务器上数据不能为空造成的,比较好的做法是是我们自己写一个类型安全转换的函数
其实是还有对于这种substring这种start和end这种也需要安全的考虑
首先、不能让App直接崩溃,应该在解析json时外面包一层try…..catch…语句,并截取在catch里面进行处理
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里面进行处理
相关文章推荐
- 微信分享接口
- android 跳转Intent (第三方应用) & 去掉标题栏 &可见性&透明背景
- iOS通知模式
- iOS开发小结 - 通过PUT请求上传数据
- iOS开发小结 - 通过PUT请求上传数据
- ios自定义控件——轮播图控件
- Android 自定义控件之简单自定义一个TopBar
- Android Acitity随笔小记
- android layout id converter插件的安装及使用(包括常用插件)
- <Android 应用 之路> 天气预报(五)
- <Android 应用 之路> 天气预报(五)
- Android平台cocos2d-x学习之——平台搭建
- Android EditText 实现特殊格式输入
- iOS开发-KVO的奥秘
- Android-ManiFest
- effective objective-c 2.0 笔记 第五章 :内存管理
- iOS开发中邮箱,电话号码,身份证,密码,昵称正则表达式验证
- Android开发遇到过期方法时的简单处理
- 安卓WebView的那些坑
- 【Android测试】【第十六节】Instrumentation——初识+实战