Пересоздание ViewModel при повороте экрана

248
04 декабря 2017, 16:58

Недавно Google выпустили Android Architecture Components, в первой же строке описания сказано:

The ViewModel class is designed to store and manage UI-related data in a lifecycle conscious way. The ViewModel class allows data to survive configuration changes such as screen rotations.

Вот пример моей ViewModel

MyViewModel.java

public class MyViewModel extends ViewModel {
    private MutableLiveData<Boolean> refreshStatus = new MutableLiveData<>();
    private MutableLiveData<ResponseHolder<List<MusicSong>>> response = new MutableLiveData<>();
    public MyViewModel() {
        Log.wtf(TAG, "MyViewModel() called = [" + hashCode() + "]");
        //set default value
        response.setValue(ResponseHolder.success(new ArrayList<>()));
    }
}

После это получаю экзепмляр MyViewModel в Activity, а так же в Fragment который находится в этой Activity.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    viewModel = ViewModelProviders.of(this).get(MyViewModel.class);
}

При запуске я вижу как конструктор MyViewModel вызывается два раза, перый из Activity и второй из Fragment, вот логи:

MyViewModel() called with: hashCode = [79759198]
MyViewModel() called with: hashCode = [97210601]

И после поворота

MyViewModel() called with: hashCode = [60773597]
MyViewModel() called with: hashCode = [186413841]

Вопрос: так и должно быть что для каждой Activity создается новый экземпляр VideModel и если да, то как он тогда переживает поворот экрана, или я что то делаю не так, тогда что?

READ ALSO
Чтение и обработка CSV в многопоточном режиме

Чтение и обработка CSV в многопоточном режиме

Я хочу считать CSV файл с большим количеством строк и обработать эти строки в многопоточном режимеДелаю так:

203
Java. Число сочетаний из N по М

Java. Число сочетаний из N по М

Есть задача: Нужно реализовать функцию, которая будет искать число сочетаний из N по M, только с определенными условиями: Функция должна возвращать...

282
Вывод текста в цикле else.Java

Вывод текста в цикле else.Java

При создании маленького консольного калькулятора

241
библиотека aFileChooser. Не могу открыть указанную директорию для выбора файла

библиотека aFileChooser. Не могу открыть указанную директорию для выбора файла

вот библиотекавнизу есть и документация к ней https://bintray

223