Должен ли я управлять стеком действий или разрешить уничтожение действий?

1

Я реализую панель управления и пользовательский интерфейс панели действий, например, в приложении Twitter:

Изображение 174551

Каждая кнопка на приборной панели переключает пользователя на другую активность. Некоторые из этих действий более важны, чем другие, и я мог представить себе, что пользователь переключается между ними через панель инструментов достаточно часто.

Я чувствую, что у меня есть два варианта:

  1. Продолжайте цикл активности, используя флаги намерения, так что, когда пользователь вернется на панель управления, он просто подталкивает активность панели инструментов к вершине стека. Затем, когда пользователь возвращается к другому действию, он подталкивает его к вершине стека. Никакая активность не будет уничтожена до тех пор, пока ОС не сделает это, чтобы получить обратно память, и все будет хорошо.

  2. Пусть действия будут уничтожены, когда пользователь вернется на панель инструментов, а затем воссоздается позже.

Какой вариант лучше с точки зрения производительности и передового опыта? Мне нравится вариант 1, но я не уверен, что я злоупотребляю целью этих флагов намерения. И если я поеду с вариантом 1, должен ли я также переопределить то, что делает кнопка "Назад", так что finish() не вызывается?

Теги:

1 ответ

0
Лучший ответ

Лично мне нравится первый вариант лучше. Таким образом, вы легко запомните состояние других действий, когда пользователь вернется к ним.

Например, если в дочернем действии пользователь прокручивает список, затем возвращается к панели управления, а затем возвращается к дочерней активности, позиция прокрутки будет там, где он оставил ее.

Что касается памяти, я не думаю, что это проблема. Например, возьмем компонент вкладки (который является параллельным навигационным контроллером на панели управления). С помощью элемента управления вкладкой все дочерние действия (действия с вкладками) также не уничтожаются.

Если память станет проблемой, я бы объединил ваши две идеи. Для менее важных действий я бы реализовал подход 2 (уничтожить их на обратной стороне), а для более важных действий (где состояние важно для пользователя, например), я бы реализовал подход 1.

  • 0
    Ваша точка зрения о состоянии хорошая. Мне нужно, чтобы это запомнилось на пару моих занятий. Что касается памяти, я совсем не волнуюсь, потому что я не мешаю ОС разрушать мои действия, когда они не видны.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню