Как доказать Android ViewModel - PullRequest
0 голосов
/ 24 июня 2019

Я хочу спросить кое-что, что я подумал, может быть, немного фундаментальным. Как я могу доказать, что класс ViewModel не будет уничтожен при изменении конфигурации в Android? Короче говоря, как доказать утверждение ниже, например, в logcat на Android Studio?

Класс ViewModel предназначен для хранения и управления данными, связанными с пользовательским интерфейсом, чтобы данные выдерживали изменения конфигурации, такие как поворот экрана.

Ответы [ 3 ]

1 голос
/ 24 июня 2019

Это метод onCleared из ViewModel. Вы можете переопределить это.

Когда ViewModel будет уничтожен, будет вызван onCleared.

Вы заметите, что при вращении экрана в MainActivity или Fragment, использующем ViewModel, метод onCleared не будет вызываться, даже если Activity.onDestroyed делает. Это черта ViewModel

onCleared вызывается только тогда, когда Activity выключается . С чем-то вроде Activity.finish или backpress

0 голосов
/ 24 июня 2019

У нас есть много способов поработать над вашим требованием.

  • Вы также можете использовать RxJava 2 для сохранения ваших изменений конфигурации.
  • Вы можете добавить изменения конфигурации в menifest.
  • Вы можете использовать переопределенный метод onConfigurationChanged.
0 голосов
/ 24 июня 2019

создайте класс 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.

...