App框架设计与重构

来源:互联网 发布:长春网络专业人才市场 编辑:程序博客网 时间:2024/06/05 12:01

1.重新规划android项目结构

需要重新规划Android项目的目录结构,分两步走:

第一步:建立AndroidLib类库,将与业务无关的逻辑转移到AndroidLib类库中。

类库中至少包含五大部分:

1、activity 存放与业务无关的Activity基类

2、cache 存放缓存数据和图片的相关处理

3、net 存放网络底层的封装

4、ui 自定义控件

5、utils 存放各种与业务无关的共用方法

第二步:将主项目中的类分门别类地进行划分,放置在各种包中:

大体包含如下:

1、activity 按照模块继续拆分,将不同模块的Activity划分到不同的包下

2、adapter 将所有适配器都放在一起

3、entity 将所有的实体都放在一起,当实体有很多的情况下,可考虑将实体按照模块进行划分,实体中应该只有属性,没有业务逻辑的方法,如果需要,就将其移到engine这个包中的某个类下面

4、db Sqlite相关逻辑的封装

5、engine 将业务相关的类都放在一起

6、ui 将自定义的控件都放在这个包中

7、utils 将所有的公用方法都放在这个包中

8、interface 真正意义上的接口,命名以I最为开头

9、listener 基于Listener的接口,命名以On作为开头

2.为Activity定义新的生命周期

可在AndroidLib类库中的BaseActivity中,重写onCreate方法:
public abstract class BaseActivity extends Activity {@overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);initVariables();initViews(savedInstanceState);loadData();}// 初始化变量,包括Intent带的数据和Activity内的变量protected abstract void initVariables();// 加载layout布局文件,初始化控件protected abstract void initViews(Bundle savedInstanceState);// 加载数据,调用方法获取数据protected abstract void loadData();}
然后让所有的Activity都继承自BaseActivity基类

3.统一事件编程模型

统一项目中的事件编程方式

4.实体化编程

1、在网络请求中使用实体,可使用GSON来实现
2、在页面跳转中使用实体,页面跳转可携带的实体需要进行SerializableParcelable进行序列化,这里推荐使用Parcelable,相对于Serializable效率高一些


0 0