2010-08-24 6 views
2

Я занимаюсь разработкой деятельности, которая выполняет часть своего государственного управления. Я пытаюсь различать следующие случаи: onResumeВ Android, как я могу определить, почему моя деятельность была возобновлена?

  1. Новый запуск
  2. задача переключатель (домашняя кнопка с длинным нажатием)
  3. резюме после того, как другой деятельности, в том же приложении
  4. пробуждения после сна
  5. изменение ориентации

есть ли что-то в намерении своей деятельности, либо в других местах, которые могут помочь мне отличить их?

Для любопытного и некоторого контекста ... Я хотел бы сохранить свой внутренний стек истории на 4 & 5. В случае 2 & 3, я бы сохранил ту же самую текущую страницу, но стереть историю (разрешить обычную назад, чтобы взять на себя роль в этой точке). Случай 1 будет инициализирован на внутренней стартовой странице активности (и может быть обнаружен достаточно легко с некоторой помощью onCreate).

+0

Я полностью понимаю, что не использую стек Android Activity. Я делаю это, потому что мои страницы/внутренние действия не являются полноэкранными (общий заголовок и панель кнопок, похожие на макет вкладки), но все же необходимо оживить их переходы контента. Основная спецификация приложения была разработана вокруг iPhone, и я прихожу в конце игры, чтобы сделать версию Android, включая такие вещи, как кнопка «Назад» и изменения ориентации, которые никогда не предполагались. – Anm

+0

Частичное решение для # 4 происходит из Intent.ACTION_SCREEN_ON и ACTION_SCREEN_OFF. Трансляции: http://groups.google.com/group/android-developers/msg/8493895c42adb74a?pli=1 – Anm

ответ

1

Есть ли что-то в намерениях деятельности или в другом месте, которые могут помочь мне дифференцировать их?

Пункт № 4 не имеет отношения к onResume(), AFAIK.

Пункт # 5 будет лучше обрабатывается с помощью android:configChanges и onConfigurationChange() хотя вы можете «обнаружить» его, возвращая что-то из onRetainNonConfigurationInstance() и увидеть, если она есть в onResume() через getLastNonConfigurationInstance().

Остальные - это не только три случая, но, вероятно, в два раза, как только вы начнете принимать во внимание такие вещи, как «вырваться из памяти, чтобы освободить ОЗУ».

С помощью манжеты кажется, что вы сделали некоторые неудачные архитектурные решения («внутренний стек истории ... стереть историю ... позволить нормальной функциональности кнопки« вернуться »в этой точке»). Android разработан вокруг множества дешевых действий, и вы, кажется, нарушаете это предписание. Вы можете это сделать, но имейте в виду, что поддержка Android для выбранного вами шаблона может быть ограничена.

+0

До этого я реализовал onConfigurationChange(), чтобы сохранить историю изменений ориентации. Кажется, это работает. После тестирования вы, кажется, верны о # 4. Оставляя # 1 и # 2, которые обрабатываются таким же образом, очищая внутренний стек истории. Что касается того, что меня выгнали из памяти, я считаю, что это правильный случай, чтобы очистить стек истории и обработать новый запуск для чего-то нового экземпляра приложения с пустой внутренней историей. – Anm

Смежные вопросы