美文网首页
我所搭建的MVVM设计模式的Android框架(五)

我所搭建的MVVM设计模式的Android框架(五)

作者: 欧西里 | 来源:发表于2020-06-07 14:33 被阅读0次

    说完了ViewModel该说说Activity了,毕竟ViewModel创建好了,还没有地方使用。

    一、MVVM之Activity

    之前的DemoActivity只是把xml用databinding绑定了,ViewModel的生命周期感知还没挂载到Activity中,于是就经过了这样一番改造。

    public class DemoActivity extends AppCompatActivity {
    
        protected ActivityDemoBinding mDataBinding;
    
        protected AClass mViewModel;
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            initAAC();
        }
    
        /**
         * 初始化AAC组件
         */
        private void initAAC() {
            mDataBinding = DataBindingUtil.setContentView(this, R.layout.activity_demo);
    
            mViewModel = new ViewModelProvider(this, new ViewModelProvider.NewInstanceFactory()).get(AClass.class);
    
            SparseArray<Object> variableSA = new SparseArray<>();
            variableSA.put(BR.aClass, CastUtil.cast(new AClass()));
            if (variableSA != null && variableSA.size() > 0) {
                for (int i = 0; i < variableSA.size(); ++i) {
                    final int variableId = variableSA.keyAt(i);
                    final Object variableValue = variableSA.valueAt(i);
                    mDataBinding.setVariable(variableId, variableValue);
                }
            }
            //让ViewModel拥有View的生命周期感应
            if (mViewModel != null) {
                getLifecycle().addObserver(mViewModel);
            }
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            //销毁DataBinding
            if (mDataBinding != null) {
                mDataBinding.unbind();
            }
        }
    }
    

    通过getLifecycle().addObserver(mViewModel);来给ViewModel注册生命周期感应。到此,基本的雏形就算搭建完成了。

    相关文章

      网友评论

          本文标题:我所搭建的MVVM设计模式的Android框架(五)

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