如何证明Android ViewModel

时间:2019-06-24 04:07:03

标签: android android-viewmodel

我想问一些我认为可能有点基本的问题。当Android中进行一些配置更改时,如何证明ViewModel类不会被破坏?简而言之,例如在Android Studio的logcat中,如何证明以下陈述?

  

ViewModel类旨在存储和管理与UI相关的数据,以便该数据在配置更改(例如屏幕旋转)中幸存下来。

3 个答案:

答案 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)

我们有很多方法可以满足您的要求。

  • 您还可以使用RxJava 2保存配置更改。
  • 您可以在清单中添加配置更改。
  • 您可以使用onConfigurationChanged重写的方法。