当前位置:网站首页>ViewModel 记录下 +

ViewModel 记录下 +

2022-08-03 06:34:00 清风徐来辽

特点:

  1. 单一职责,将数据从业务中抽离出来。即只要是界面上看的到的数据,相关变量都应该存放在ViewModel,而不是Activity中
  2. 生命周期长,存在于所属对象(Activity,Fragment)的全部生命周期

在这里插入图片描述

  1. 扩展性好,方便与其他功能组合,例如Livedata,room.

使用场景:

  1. 横竖屏切换,Activity重建,数据可依然保存
  2. 同一个Activity下,Fragment之间的数据共享

应用事例:

implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
public class BookChargeVM  extends AndroidViewModel {
    

    private MutableLiveData<Boolean> initReuslt = new MutableLiveData();

    public BookChargeVM(@NonNull Application application) {
    
        super(application);
    }

    public LiveData<Boolean> getInitResult() {
    
        return this.initReuslt;
    }

}
@Route(path = "/main/AndroidViewModelActivity")
public class AndroidViewModelActivity extends BaseActivity {
    

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_android_view_model);
        AppLogUtils.i(TAG,"onCreate --------------");

        this.mVM.getInitResult().observe(this, (result) -> {
    
            AppLogUtils.i(TAG,"result ===="+result); 
        });

    }

    private BookChargeVM mVM
            = (BookChargeVM) ViewModelProvider.AndroidViewModelFactory.getInstance(this.getApplication()).create(BookChargeVM.class);

}
            AppLogUtils.i(TAG,"result ===="+result); 

这行日志没有打出来,就是说initReuslt 未改变的情况下不会产生回调

支持协程

将 Kotlin 协程与生命周期感知型组件一起使用:https://developer.android.google.cn/topic/libraries/architecture/coroutines

参考地址

ViewModel简介:https://www.jianshu.com/p/105541cde280

ViewModel 使用及原理解析:https://blog.csdn.net/xfhy_/article/details/88703853

Android 开发者-文档-指南-ViewModel 概览:https://developer.android.google.cn/topic/libraries/architecture/viewmodel#java

原网站

版权声明
本文为[清风徐来辽]所创,转载请带上原文链接,感谢
https://yoshin.blog.csdn.net/article/details/126095432