1.1重新规划Android项目结构
基本上项目目录尽可能细分,容易快速查找界面。现在感觉mvp模式不错,可以采用。
1.2位Activity定义新的生命周期
核心:单一职责。一个类或方法,只做一件事情。
将onCreate分为三个子方法并为抽象的abstract:
- initVariables():初始化变量,包括Intent带的数据和Activity。
- initViews(savedInstanceState):加载layout布局文件,初始化控件,为控件挂上时间方法。
- initDatas():调用MobileApi获取数据。
1.3统一事件编程模型
1、不要用switch...case...这种方式,也就是说,除了在initViews中,其他地方不要出现R.id.xxx这种。
2、点击事件直接在initViews中初始化,而且事件具体内容分离,独立私有方法。比如:
mBtn = (Button) findViewById(R.id.button2); mBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { test(0); } });
1.4实体化编程
1.4.1在网络请求中使用实体
网路编程中尽量把网络返回数据构建成实体类,而不是用到再get值。
在使用fastJson中,可能会出现下面问题:
1)加了符号Annotation的实体属性,一使用就崩溃。
2)当有泛型属性时,一使用就崩溃。
这很有可能是混淆没有加以下配置:
-keepattributes Signature //避免混淆泛型 -keepattributes *Animation* //不混淆注解
1.4.2实体生成器
快速理清Json-->实体类
可用EnityGenerater工具,也可用网络上JSON解析即可。
1.4.3在页面跳转中使用实体
使用实体类传递数据,序列化。
1.5Adapter模板
可以抽取公共Adapter来使用。
也可以规定Adapter都必须集成自BaseAdapter。
当然ViewHolder是不可少的。
1.6类型安全转换函数
一般来讲大部分转化在null、数组或其它越界较多。
所以对于MobileAPI返回的数据中,需要加工或者敏感信息(比如金钱)应该对数据进行判断,或进行try..catch捕获错误并进行处理,比如发送错误日志给服务器。也就是说错误信息有两种,一种没有捕获的,可以用友盟类似工具处理,另外一种捕获的可根据情况判断是否提交服务器。
网友评论