android SDK开发-- 功能设计

先把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的工具类先略过

文章导航