赞
踩
ViewModel概览https://developer.android.google.cn/topic/libraries/architecture/viewmodel
ViewModel 类旨在以注重生命周期的方式存储和管理界面相关数据。ViewModel 类让数据可在发生屏幕旋转等配置更改后继续留存。
ViewModel的亮点:
这篇笔记主要分析一下数据的持久化也即是:
添加依赖
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
定义ViewModel
public class MyViewModel extends ViewModel {
// 这里可以是任何变量
public int number;
}
使用ViewModel
public class MainActivity extends AppCompatActivity { private MyViewModel myViewModel; private TextView mTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myViewModel = new ViewModelProvider(this).get(MyViewModel.class); mTextView = findViewById(R.id.text); mTextView.setText(myViewModel.number + ""); } public void onTextView(View view) { myViewModel.number = myViewModel.number + 1; mTextView.setText(myViewModel.number + ""); } }
运行上面代码以后,当用户改变屏幕方向等配置的时候,ViewModel中保存的数据不会丢失;
至于ViewModel中的数据被保存的原因网上有很多内容,说白了就是一句话,数据被保存到了公共内存上面了;
涉及到两个方法:
onRetainNonConfigurationInstance() 是在Activity 销毁的时候 进行存储信息。
getLastNonConfigurationInstance() 的作用是获取onRetainNonConfigurationInstance存储的信息。
当屏幕发生旋转的时候 ,会先调用 onRetainNonConfigurationInstance先将数据进行保存,然后再通过 getLastNonConfigurationInstance 将保存的数据获取到。
里面的具体代码不再一列举了,有兴趣可以自己查看;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。