Добрый день, пишу проект под 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.