Если действия в заднем стеке завершены, вернется ли кнопка «Назад» к предыдущим действиям? - PullRequest
3 голосов
/ 26 октября 2011

Сводка

Вот мой сценарий:

  • Мое приложение запускает внешнее приложение (просмотрщик PDF).
  • Затем я заканчиваю() Моя Активность, которая запустила это приложение (есть другие Активности из моего приложения, все еще в стеке Активности).
  • Если пользователь нажимает Назад, то он просто выходит из этого приложения, а не возвращается в мое приложение.

Должен ли Android работать обратно через стек Activity, пока не найдет работающее Activity для моего приложения, или он откажется, если не сможет найти предыдущее Activity?

Если я неt окончания () моей активности, затем кнопка «Назад» возвращается к моей активности, поэтому я знаю, что базовая функция работает.

Сведения

Мой стек активности:

MainActivity -> LoginActivity -> ActivityA -> ActivityB

На данный момент, я считаю, adb shell dumpsys activity подтверждает стек:

Hist# 11: HistoryRecord {40c0c018 com.mypackage / com.mypackage.ActivityB}
Hist # 10: ПриветstoryRecord {40d27af0 com.mypackage / com.mypackage.ActivityA}
Hist # 9: HistoryRecord {40d31368 com.mypackage / com.mypackage.LoginActivity}
Hist # 8: HistoryRecord {40db2430 com.mypackage / com.mypackage.MainActivity}
Hist # 7: HistoryRecord {40c2a978 com.mypackage / com.mypackage.LoginActivity}
Hist # 6: HistoryRecord {40bf6008 com.mypackage / com.mypackage.LoginActivity}
Hist # 5:HistoryRecord {40542d58 com.htc.launcher / .Launcher}

Теперь моя ActivityB запускает внешнее приложение для просмотра PDF.

В моем приложении есть некоторые особые требования безопасности, которые означают, что мне нужночтобы заставить пользователя повторно ввести свой ПИН-код, прежде чем он сможет снова увидеть информацию в приложении.

Для этого, когда приложение переходит в фоновый режим, я передаю Intent, который сообщает ActivityA и ActivityB о завершении ().

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

После запуска средства просмотра PDF adb shell dumpsys activity показывает, что стек:

Hist # 7: HistoryRecord {40b97a08 com.adobe.читатель / .AdobeReader}
Hist # 6: HistoryRecord {40542d58 com.htc.launcher / .Launcher}
Hist # 5: HistoryRecord {40978318 com.google.android.gm/.ConversationListActivity Competition

mLastPausedActivity: HistoryRecord {40b4aa90 com.mypackage / com.mypackage.ActivityB}

Кто-нибудь знает, как должен работать этот сценарий?Наивно, я ожидал бы, что Android будет работать обратно через задний стек, пока не достигнет LoginActivity ...

Я считаю, что Android оставляет за собой право уничтожать любые действия, которые больше не находятся на переднем плане, так же как иповедение здесь просто не определено?

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

Я изучаю другие обходные пути (например, с помощью startActivityForResult, настройкаIntent.FLAG_ACTIVITY_NO_HISTORY для ActivityB и т. Д.), Но мне было бы интересно узнать, как Android работает через стек.

1 Ответ

0 голосов
/ 26 октября 2011

Когда вы закончите () свою деятельность, она будет удалена из стека.

Вы не можете вернуться к нему, если он не создан снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...