Недавно 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
и если да, то как он тогда переживает поворот экрана, или я что то делаю не так, тогда что?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Я хочу считать CSV файл с большим количеством строк и обработать эти строки в многопоточном режимеДелаю так:
Есть задача: Нужно реализовать функцию, которая будет искать число сочетаний из N по M, только с определенными условиями: Функция должна возвращать...
вот библиотекавнизу есть и документация к ней https://bintray