Задать вопрос
@Develop9999

Хорош ли мой вариант сохранения состояния фрагмента в android?

Добрый день, пишу проект под android и уже очень давно мучаюсь с одной проблемой, спустя время нашёл более менее нормальное решение, но не уверен хорошо ли оно.
В чём собственно суть вопроса, каждый раз когда мы создаём фрагмент и инициализируем его через
onCreateView, то мы всегда вызываем inflater.inflate(R.layout.fragment_controller, container, false);, а это операция довольно затратная и по ресурсам и по времени, часть кнопок или других визуальных объектов можно генерировать через asynktask, но в том случае когда мы не можем программно создать объекты, то приходиться использовать inflate. я узнал что можно оказывается добавлять фрагменты в fragmentManger таким образом и потом просто прятать их и показывать.
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
if (!fragmentsAdd[FRAGMENT_CURRENT]) {
     fragmentTransaction.add(R.id.container, fragments[FRAGMENT_CURRENT], fragmentsTag[FRAGMENT_CURRENT]);
     fragmentsAdd[FRAGMENT_CURRENT] = true;
}
for (int i = 0; i < fragments.length; i++) {
     if (i == FRAGMENT_CURRENT)
           fragmentTransaction.show(fragments[i]);
     else if (fragmentsAdd[i])
           fragmentTransaction.hide(fragments[i]);
}
fragmentTransaction.commit();

В такой реализации мы храним все фрагменты в озу, есть ли другие варианты решения или как делается по другому, к примеру загрузка страницы в вк в мобильной версии или в youtube?
Я хочу узнать другие варианты решения этой проблемы и хочу узнать насколько плох или хорош этот вариант, и при этом варианте программа съедала порядка 90 мб озу, при этом было 6-7 фрагментов.
Все переключения я обрабатываю через navigator drawer.
  • Вопрос задан
  • 325 просмотров
Подписаться 3 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
API есть, значит делать так можно. Но вообще-то это не очень хорошая практика, тк растёт потребление памяти. А если во вьюхах останутся ссылки на какие-нибудь большие изображения, то может и OOM случиться
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы