# 功能设计
先把app常用的功能进行抽象,主要从Activity Fragment Service等控件进行考虑。
其次完善相关的工具类。主要从代码封装、迭代、可维护性等方面考虑。
### 抽象
### Activity的抽象
Activity抽象主要目的是简化具体功能界面的工作量。主要通过代码封装的方式来达到效果。
同时需要处理网络请求、UI刷新等操作
### Fragment的抽象
Fragment的抽象与activity类似。但不同的是需要处理多个Fragment之间的互相调用,传参方式也不太一样。
### 工具类
App需要一个管理Activity或者Fragment的工具类,对其做全局的操作(方法调用) 为了减少代码的耦合度。不建议在Activity中直接加static引用。可以通过写一些工具类间接的实现。
Activity中访问网络请求以及回调刷新UI是一件比较繁琐的事儿。常规的做法是new一个Thread是传入一个Handler对象,网络请求完成以后sendMessage刷新。但是这种做法耦合度比较强,而且好多业务逻辑都需要在Activity中处理,代码臃肿
~~~
private Handler handler;
protected void onCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
handler= new handler(){
publicvoid handlerMessage(){
if(msg.what== 1){
//do sth
}
}
}
}
public class NetRunnable implementsRunnable{
privateHandler handler;
publicNetRunnable(Handler handler){
this.handler= handler;
}
publicvoid run(){
//do sth 处理网络等
Messagemsg = Message.obtain();
msg.what= 1;
msg.obj= “网络请求结果”;
this.handler.sendMessage(msg);
}
}
~~~
建议将网络请求的代码封装一下, 封装后续
### ActivityMgr
这个类的作用主要是保存app中所有正在运行的Activity的引用。
~~~
private static Stack<BaseActivity>activities = new Stack<BaseActivity >;
public static void push(BaseActivityactivity){
activities.push(activity);
}
public static void remove(BaseActivityactivity){
activities.remove(activity);
}
public class BaseActivity extends Activity
public void onCreate(BundlesaveInstanceState){
ActivityMgr.push(this);
}
public void onDestroy(){
ActivityMgr.remove(this);
}
~~~
解析一下为什么onDestroy的时候采用remove方法而不是pop()
防止acitivty AB, A启动 B 如果此时A#finish调用Stack#pop则会把B的引用移除
Fragment的工具类先略过
- 前言
- Android sdk开发 - 序
- Android sdk开发(一)Application设计
- Android sdk开发(二) Log日志类的设计
- Android SDK开发 (三) App的属性配置
- android SDK开发-- 功能设计
- android SDK开发 -- TitleBar封装(一)
- android SDK开发 -- TitleBar封装(二)
- Android SDK开发 -- TitleBar重构 (代理模式的使用)
- Android SDK开发 -- TitleBar重构 (代理模式-优化)
- android SDK核心功能 -- 消息传递与界面刷新
- Android SDK开发 -- TitleBar重构 - 使用策略模式、舍弃代理模式