Android入门Android重构

为Activity定义新的生命周期

2016-05-31  本文已影响132人  looper1211

在单一设计模式里有一条原则:单一职责,一个类或方法,只做一件事情。
针对Activity,大多时候每次都会在OnCreate方法里进行加载布局、初始化相关变量、接受其他页面传递的Intent参数、请求网络等操作,我们可以把将其拆分成三个子方法,如下图:

针对这些子方法介绍如下:

于是可以在自己项目的类库,比如AndroidLib这个类库的BaseActivity中,重写onCreate方法:

public abstract class BaseActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle saveInstanceState) {
        super.onCreate(saveInstanceState);

        initVariable();
        initViews(saveInstanceState);
        loadData();
    }

    protected abstract void initVariable();

    protected abstract void initViews(Bundle saveInstanceState);

    protected abstract void loadData();

    protected <T extends View> T $(int resId) {
        return ViewUtils.findViewById(this, resId);
    }

}

这三个方法都要声明为abstract的,从而要求所有子类必须实现这三个方法。这里多实现了一个加载布局控件的方法,具体请查考 重新学会findViewById 这篇文章。子类只需实现具体的操作方法即可,比如AndroidDemo的Activity就可以这么写:

    public class MainActivity extends BaseActivity {
    
    @Override
    protected void initVariable() {
        
    }

    @Override
    protected void initViews(Bundle saveInstanceState) {
        setContentView(R.layout.activity_main);
        TextView tvTest = $(R.id.tv_test);
        Button btTest = $(R.id.bt_test);
    }

    @Override
    protected void loadData() {

    }

 }
上一篇下一篇

猜你喜欢

热点阅读