Предисловие - код, который я создал до сих пор, уже предоставляет желаемый пользовательский интерфейс, мой вопрос касается ресурсов телефона и существует ли «лучшая» реализация. Кроме того, я относительно новичок в разработке для Android и, возможно, неправильно понимаю некоторые основные понятия.
Я занимаюсь разработкой приложения с вкладками, и некоторые вкладки имеют несколько представлений. В настоящий момент каждое представление управляется фрагментом, и когда пользователь находится на вкладке и открывает новое представление, представления переходят горизонтально.
(приложение является портом для Android существующего приложения для iPhone, и хотя люди, на которых я работаю, с готовностью понимают необходимость сделать Android-приложение как можно более родным для Android, они хотят, чтобы базовый пользовательский интерфейс и управление остаются прежними, так что если пользователь iPhone купит телефон Android и купит другую копию своего приложения, принципиальной разницы не будет)
Однако основная вкладка отличается - она сама себя перезагружает. Приложение по сути является учебным пособием; представьте, что каждый вид представляет собой карточку, представляющую информацию, и пользователя, если листать карточки.
Это достигается с помощью запроса фрагмента 'card', чтобы менеджер фрагментов отсоединился, а затем снова присоединился. Это достигается путем вызова метода в FragmentActivity, который выполняет следующее (упрощенное из фактического кода):
FragmentTransaction ft = .... .beginTransaction();
ft.setCustomAnimations(int out,int in)
ft.detach(relevantFragment);
ft.attach(relevantFragment);
ft.commit();
.... .executePendingTransaction();
где 'out' - fromXDelta = "0", toXDelta = "- 100%"
и 'in' - fromXDelta = "100%", toXDelta = "0"
Следовательно, старый вид сдвигается влево, в то время как новый вид скользит справа.
Это работает просто отлично, на самом деле, с точки зрения пользовательского опыта, это именно то, что я хочу. Однако фрагмент, который мы перезагружаем, имеет сложную иерархию представлений чрезвычайно , и я понимаю, что фрагменты будут собираться и повторно создаваться для каждого перехода при каждом переходе, который пользователь может легко вызвать большое количество раз (100+) при использовании приложения для обучения.
Почти все, что я прочитал, указывает на то, что я должен избегать создания / сбора тяжелых объектов, поскольку это заставит мое приложение пожирать батарею пользователя, независимо от того, достаточно ли мощный процессор для работы без визуальной задержки.
.
АКТУАЛЬНЫЙ ВОПРОС: Есть ли какой-либо способ эмулировать такое поведение, которое не заставляет телефон полностью разрушать и заново создавать представление каждые секунды просмотра, когда пользователь щелкает по нему?
Вещи, которые я рассмотрел:
Устраните транзакции / анимации и просто заставьте фрагмент загружать новую информацию. Это было бы легко, конечно, но это не то, чего хотят мои работодатели.
Создайте две идентичные копии иерархии представления в XML и переключайте их назад и вперед из View.VISIBLE и View.GONE, используя собственную ScaleAnimation для попытки эмулировать это поведение. Я не уверен, сработает ли это, но на первый взгляд это выглядит довольно ... неряшливо.
Это ненужная и / или глупая оптимизация, о которой мне не стоит беспокоиться из-за того, как работает телефон и / или система Android, и я просто не понимаю, что теряю время.
Любые советы, предложения или разъяснения о том, как работает операционная система, высоко ценятся.