Сдерживающее состояние приложения для Android, использующее alwaysRetainTaskState и lauchMode

В моем приложении для Android у меня есть основной вид деятельности, который служит точкой входа к моему приложению, которое настроено в моем файле манифеста как это:

<activity android:name=".Main"
              android:label="@string/app_name"
              android:screenOrientation="portrait"
              android:alwaysRetainTaskState="true"
              android:launchMode="singleTask">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

Таким образом для конкретного варианта использования, позволяет, говорят, что пользователь запускает приложение от главного экрана путем нажатия на значок в средстве запуска приложения. После запуска приложения пользователь перешел от Основного вида деятельности до действия A и затем наконец к действию B. На данном этапе пользователь решает проверить их Facebook, таким образом, они нажимают кнопку "Домой" для помещения моего приложения в фоновом режиме, и запускает приложение Facebook.

После проверки их Facebook пользователь хочет возвратиться к моему приложению, таким образом, они нажимают клавишу Home и запускают приложение от средства запуска приложения (точно так же, как они сделали в первый раз, когда это было запущено).

Когда пользователь возвращается к моему приложению, я хочу, чтобы приложение возвратилось к последнему действию, которым пользователь был в том, когда приложение было помещено в фон, который в этом случае является действием B. В файле манифеста я установил alwaysRetainTaskState=true, чтобы удостовериться, что ОС не уничтожает операции моего приложения.

Теперь к моему вопросу: как я получаю поведение, которое я описал выше? Каждый раз, когда я нажимаю значок своего приложения, он всегда запускается при Основном виде деятельности, несмотря ни на что. Я думаю, что это из-за категории. Атрибут СРЕДСТВА ЗАПУСКА. Я попробовал android:launchMode=singleTask, но это не имело значения; это всегда запускается в Main.

Если бы кто-то мог бы разъяснить поглощенные фильтры, режимы запуска и задачи, которые были бы большими!

14
задан jlim 13 January 2010 в 18:53
поделиться

2 ответа

Вот как я получил его на работу в IE8:

  1. Перейти на вопрос о сайте, например, https://xxx.yyy.com
  2. Нажмите, пока не дойдете до ошибки сертификата в строке состояния браузера.
  3. Просмотрите сертификат, затем на вкладке «Детали» выберите «Копировать в файл».
  4. Сохранить на рабочий стол в виде XXX.CER, например, начало
  5. , запущенных, MMC.
  6. Файл, Добавить / удалить оснастку,
  7. Выберите Сертификаты, нажмите Добавить, мою учетную запись пользователя, затем закончите, затем OK,
  8. выкопать доверие доверия корневых органов сертификации, сертификаты,
  9. Щелкните правой кнопкой мыши Сертификат, выберите все задачи, импорт,
  10. Выберите «Сохранить CERT» на рабочем столе
  11. Выберите «Установить все сертификаты» в следующем магазине, нажмите «Обзор»,
  12. Установите флажок «Показать физические магазины», расширить доверенную корневую сертификацию. Власти и выберите локальный компьютер там, нажмите OK, завершите импорт,
  13. Проверьте список, чтобы убедиться, что он отображается. Вам, вероятно, нужно будет освежить, прежде чем увидеть это. Выход MMC,
  14. Открытый браузер, выберите Инструменты, История просмотра Удалить
  15. Выбрать все, но включенные данные фильтрации, завершены,
  16. Перейти к параметрам Интернета, вкладку «Содержание», Clear SSL,
  17. Закрыть браузер и снова отображать тестовое задание.
-121--584952-

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

Рациональная вот эта последняя активность, которая была видимой, выполнит метод ONSTOP при прервании.

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

3
ответ дан 1 December 2019 в 13:21
поделиться

FYI singleTask - это не то, что вы хотите, так как начинается новая задача:

http://developer.android.com/guide/topics/manifest/activity-element.html#lmode

Как вы запускаете Действие B? Какие-нибудь нестандартные режимы запуска или флаги намерения?

.
9
ответ дан 1 December 2019 в 13:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: