美文网首页Android入门Android重构
为Activity定义新的生命周期

为Activity定义新的生命周期

作者: looper1211 | 来源:发表于2016-05-31 23:13 被阅读132次

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

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

    • initVariables:初始化变量,包括获取Intent带的数据和Acivity内的变量
    • initViews:加载layout布局,初始化控件,为控件添加监听事件
    • loadData:调用相关API获取数据

    于是可以在自己项目的类库,比如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() {
    
        }
    
     }
    

    相关文章

      网友评论

        本文标题:为Activity定义新的生命周期

        本文链接:https://www.haomeiwen.com/subject/kkchdttx.html