Сводка
Вот мой сценарий:
- Мое приложение запускает внешнее приложение (просмотрщик 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 работает через стек.