第一章 重构
1、重新规划Android架构
主App+AndroidLib
现在Android Studio开发可以创建多个moudle,那么AndroidLIb就可以创建单独的一个moudle管理
AndroidLib:
- activity包 activity基类数据
- net 网络相关
- cache 缓存数据和图片处理相关
- ui 自定义控件
- utils 工具类
主APP:
- activity 业务界面
- adapter 所有适配器都放在一起
- entity 实体类
- db 数据库
- engine 将业务类放一起
- ui自定义控件
- untils工具
- interface 接口
- listener 基于Listener的接口,命名以On作为开头
activity按模块划分,entity应该只有属性
2、定义BaseActivity
public abstract class BaseActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); initVariables(); initViews(savedInstanceState); loadData(); } /** * 初始化变量,包括Intent带的数据和Activity内的变量 */ protected abstract void initVariables(); /** * 加载布局,初始化控件,为控件挂上事件方法 * @param savedInstanceState */ protected abstract void initViews(Bundle savedInstanceState); /** * 调用MobileAPI获取数据 */ protected abstract void loadData(); }
3、统一事件编程模型
建议监听事件以下方式实现
@Override protected void initViews(Bundle savedInstanceState) { setContentView(R.layout.activity_main); mTvOpen = (TextView)findViewById(R.id.open); mTvOpen.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //业务逻辑,单独提取私有类来实现,避免initView难以维护 } }); }
不建议使用activity implements View.OnClickListener方式,主要不希望R.id中的R反复出现
4、实体化编程
4.1
建议使用Gson或者fastJSON来处理网络请求等返回的json数据。
不建议自己转换JSONObject/JSONArray等然后使用JSONObject/JSONArray来获取数据,并在Activity之间传递
JSONObject/JSONArray是没有序列化的,而且十分繁琐
fastJSON混淆请加入:
-keepattributes Signature //避免混淆泛型 -keepattributes *Annotation* //不混淆注解
否则:
- 加入符号Annotation的实体属性,崩溃
- 当有泛型属性时,崩溃
4.3
不建议使用全局变量在activity之间传递参数
必须使用时,请一点序列化参数
*这个我是不用的,一般都是有intent传参就可以
5、Adapter模板
自定义的Adapter需要实现4个方法
getCount()
getItem()
getItemId()
getView()
当然还有Holder类,ViewHolder的使用涉及到list的性能问题,这个网上也比较多
6、 安全转换函数
public final static int convertToInt(Object o, int defaultValue) { if (o == null || "".equals(o.toString().trim())) { return defaultValue; } try { return Integer.valueOf(o.toString()); } catch (Exception e) { try { return Double.valueOf(o.toString()).intValue(); } catch (Exception e1) { return defaultValue; } } }
小结:
这一章的内容不太多,也比较好理解,对于软件编写,会发现一个好的设计架构对于自己后续的开发是多么有用的帮助。
浙公网安备 33010602011771号