🤔 До какого момента ViewModel гарантирует сохранение состояния?
ViewModel в Android гарантирует сохранение состояния до тех пор, пока соответствующее Activity или Fragment находится в памяти.
🟠Поворот экрана
При изменении конфигурации, например, повороте экрана, Activity уничтожается и пересоздается. ViewModel выживает эти изменения конфигурации, обеспечивая сохранение состояния.
🟠Навигация между фрагментами
Когда вы переходите между фрагментами в одном Activity, ViewModel фрагмента сохраняет свои данные.
🚩Когда ViewModel уничтожается
🟠Завершение процесса
Если операционная система решает завершить процесс приложения для освобождения ресурсов, ViewModel будет уничтожен.
🟠Удаление Activity из памяти
Когда пользователь закрывает Activity или приложение завершает работу (например, при нажатии кнопки "назад" до закрытия Activity), ViewModel будет уничтожен вместе с Activity.
Пример использования ViewModel
// ViewModel
public class MyViewModel extends ViewModel {
private MutableLiveData<String> data;
public MyViewModel() {
data = new MutableLiveData<>();
}
public LiveData<String> getData() {
return data;
}
public void setData(String newData) {
data.setValue(newData);
}
}
// Activity
public class MyActivity extends AppCompatActivity {
private MyViewModel viewModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewModel = new ViewModelProvider(this).get(MyViewModel.class);
// Подписка на изменения данных
viewModel.getData().observe(this, newData -> {
// Обновление UI
});
// Установка новых данных
viewModel.setData("Hello, World!");
}
}
👉Новости 👉Платформа