Воссоздать фрагмент с нуля или использовать backstack? - PullRequest
0 голосов
/ 19 января 2020

Мне нужно разработать приложение для вопросника, которое показывает последовательность из 8 различных макетов экрана, каждый экран с различными данными. Конкретная последовательность зависит от предыдущих ответов пользователя. Так что это может go примерно так:

A> B> B> B> C> B> B> D> D> D> D> D> D> D> D> D> D> E> F> F> F> F> B> B> G> F> F> et c

Последовательность вопросов может составлять до 500 вопросов (согласно требованиям). При нажатии кнопки «Назад» некоторые из этих экранов должны быть пропущены (например, вы можете не отображать некоторые из F или некоторые из D).

Я новичок в android и, возможно, не сделал лучший выбор: у меня есть 1 действие для вопросника и несколько фрагментов (A, B, C, D, et c) которые представляются последовательно в соответствии с логикой вопросника c и предыдущими ответами пользователя. Возвращение сделано с использованием backstack. Было много проблем с возвратом, а затем снова вперед (сохранение правильного состояния / сохранение правильных данных в фрагменте / проблемы с памятью и т. Д. c).

В этот момент приложение стало настолько запутанным и глючным, что я подумываю, возможно, отказаться от backstack. Может быть, я мог бы просто поместить последовательность фрагментов в базу данных как I go вперед (имеется в виду только тип фрагмента и несколько связанных идентификаторов), а затем извлечь соответствующие данные из БД и воссоздать предыдущий фрагмент с нуля в onBackPressed метод, если кнопка назад нажата. Кажется, он чище и, возможно, менее склонен к неожиданному поведению (?), Тем более что я неопытен в android.

Является ли это приемлемым решением? Как каждый раз создание фрагмента влияет на производительность памяти и производительность процессора? Каковы будут недостатки или преимущества этого подхода? Какая, по вашему мнению, лучшая архитектура для данного приложения?

...