#android #android-activity #viewmodel #store #onpause
Вопрос:
Я подумал, что модель androidviewмодель с фрагментацией в качестве владельца магазина была бы хорошей идеей для того, чтобы:
- Обрабатывать перекрестную связь между фрагментами;
- Обрабатывайте элементы пользовательского интерфейса, в которых сохраняются изменения навигации(например, меню навигатора или панель инструментов).,
- Обработка временного кэша для загруженных данных (для предотвращения двойной загрузки при создании/уничтожении фрагментов)
Например: onCreateView фрагмента()(Подключается к БД) => onDestroy фрагмента() (отключается от кэша, но остается подключенным к БД) =>> onCreateView фрагмента() снова (подключается к кэшу)).
Но самое главное:
- Обрабатывает некоторую степень фонового прослушивания БД, что означает не так много, как службы уведомлений, которые могут переносить приложение в фоновом режиме, но также не так ограничено, как вызывается исключительно представлением, что означает, что они должны быть подключены при запуске приложения.
Проблема в том, что владелец хранилища ViewModel () фрагментации () не очищается (), …никогда, если мы предоставим моделям представления собственный гипотетический жизненный цикл, который начинается с создания экземпляра и заканчивается на onCleared (), и свяжем их с владельцем хранилища действия, которым они в основном становятся … Обслуживание.
Поэтому, прежде чем создавать пользовательский ViewModelStoreOwner, который обрабатывает/прослушивает действия OnStart() и onPause (), мне интересно, может ли уже существовать компонент, который делает это (о котором я не знаю), и как к этому компоненту можно получить доступ через различные фрагменты.
Теперь я знаю, что действия имеют свой собственный жизненный цикл, но если кто-то думает, что абсолютно каждый компонент доступен только для доступа к владельцу жизненного цикла действия…. tbh Я не думаю, что это был бы лучший подход, класс Activity станет нечитаемым, переполненным несвязанными функциями.
Комментарии:
1. «Проблема в том, что ViewModelStoreOwner от FragmentActivity () не очищается (), …никогда» — он очищается при
finish()
выполнении действия, т. Е. Когда вы нажимаете системную кнопку «Назад», чтобы закрыть действие. Вы читали Руководство по архитектуре приложений ? В нем объясняется роль моделей представлений и то, как кэшировать данные и предоставлять их вашему пользовательскому интерфейсу с помощью API с учетом жизненного цикла.2. Нет, не видел, спасибо за ссылку.