Я занимаюсь разработкой Android в течение 3 лет, и это все еще трудно решить, когда дело доходит до аналогичного сценария.В настоящее время я считаю, что большинство приложений имеют многоэтапный экран / поток.
Например, поток бронирования.Вам необходимо выполнить несколько шагов, таких как выбрать билет, выбрать место, выбрать информацию о продукте, а затем ввести личные данные.Для каждого шага могут потребоваться данные из предыдущего шага.
Я провел много исследований по этому вопросу и прочитал много сообщений из reddit и SO, но все еще не пришел к выводу.
Google сказал нам использовать фрагменты для гибкого интерфейса, а Джейк Уортон также отметил, что «Вы можете использовать фрагмент, но не используйте его backstack».
Должен ли я использовать одну операцию с несколькими фрагментами в качестве шаговили отдельные действия, причем каждое действие представляет собой шаг?
В настоящее время я использую первый подход, добавляя фрагмент в backstack и восстанавливая их состояние данных при извлечении (пользователь нажимает назад).Тем не менее, мне нужно установить 'freezesText' для всех текстовых представлений и убедиться, что адаптер для повторного просмотра находится во фрагменте onCreate, чтобы сохранить его состояние.Возможно, будет еще больше неприятностей.
Я даже написал собственный контейнер / менеджер фрагментов для беспрепятственного обслуживания своих фрагментов.
https://github.com/Veeyikpong/easyfragmentcontainer/blob/master/src/main/java/com/veeyikpong/easyfragmentcontainer/FragmentContainer.kt
Я вижу много источников, упоминающих эту деятельностьпереходы дороже.Таким образом, я написал два приложения, имитирующих сценарий для сравнения производительности.Оба приложения обслуживали один и тот же экран и результат, разработанный с использованием MVP arch.Эти приложения загружают новости в список, и вы можете нажать их, чтобы просмотреть детали.
Одиночное действие с двумя фрагментами: https://github.com/Veeyikpong/fastNewsFragment
Отдельные действия: https://github.com/Veeyikpong/fastNewsActivity
Я сравнил их с профилировщиком Android Studio, заметил, что они не сильно отличаются по потреблению памяти, но у отдельного приложения действий меньший размер кода (10216 КБ), а у приложения с фрагментами - 14 000 КБ.
FastNewsActivity
FastNewsFragment
На основании теста я не заметил большого различиямежду ними, и, конечно, развиваться с помощью просто деятельности гораздо быстрее.Я делаю тест неправильно?Пожалуйста, советуйте по этому сценарию.
Или я должен попробовать новый компонент навигации от Google?Говорят, он справится со сложностью FragmentTransactions для вас.