我想问一些我认为可能有点基本的问题。当Android中进行一些配置更改时,如何证明ViewModel类不会被破坏?简而言之,例如在Android Studio的logcat中,如何证明以下陈述?
ViewModel类旨在存储和管理与UI相关的数据,以便该数据在配置更改(例如屏幕旋转)中幸存下来。
答案 0 :(得分:1)
onCleared
中有一种ViewModel
方法。您可以覆盖它。
ViewModel
被销毁时,将调用onCleared
。
您会注意到,在使用MainActivity
的{{1}}或Fragment
中旋转屏幕时,即使{{1 }}。这是ViewModel
onCleared
仅在Activity.onDestroyed
关机时被调用。使用ViewModel
或backpress
答案 1 :(得分:0)
创建一个viewmodel
类,并声明一个其中的变量,以便在viewmodel
的方向更改时将一些数据放入其中并记录下来或烘烤activity
的数据:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
}
}
还需要在清单中配置一些元素:
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
数据将保留在视图模型中。否则,在登录或烘烤时会出现nullpointexception
。
答案 2 :(得分:-1)
我们有很多方法可以满足您的要求。