[英]If Activities in the back stack are finished, will Back button return to earlier Activities?
摘要
這是我的情景:
Android應該通過活動堆棧返回工作,直到它找到我的應用程序的運行活動,或者它是否會放棄,如果它找不到以前的活動?
如果我沒有完成()我的Activity,那么Back按鈕返回到我的Activity,所以我知道基本功能正在運行。
詳情
我的活動堆棧是:
MainActivity - > LoginActivity - > ActivityA - > ActivityB
此時,我相信adb shell dumpsys activity
確認了堆棧:
歷史#11:HistoryRecord {40c0c018 com.mypackage / com.mypackage.ActivityB}
歷史#10:HistoryRecord {40d27af0 com.mypackage / com.mypackage.ActivityA}
歷史#9:HistoryRecord {40d31368 com.mypackage / com.mypackage.LoginActivity}
歷史#8:HistoryRecord {40db2430 com.mypackage / com.mypackage.MainActivity}
歷史#7:HistoryRecord {40c2a978 com.mypackage / com.mypackage.LoginActivity}
歷史#6:HistoryRecord {40bf6008 com.mypackage / com.mypackage.LoginActivity}
歷史#5:HistoryRecord {40542d58 com.htc.launcher / .Launcher}
現在,我的ActivityB啟動了一個外部PDF查看器應用程序。
我的應用程序有一些特定的安全要求,這意味着我需要強制用戶重新輸入他們的PIN,然后才能再次在應用程序中查看信息。
為此,當應用程序移動到后台時,我廣播一個Intent,告訴ActivityA和ActivityB完成()。
當用戶在PDF查看器中按Back時,我希望它們返回到LoginActivity。 不幸的是,該應用似乎似乎退出。
PDF查看器啟動后, adb shell dumpsys activity
顯示堆棧是:
歷史#7:HistoryRecord {40b97a08 com.adobe.reader / .AdobeReader}
歷史#6:HistoryRecord {40542d58 com.htc.launcher / .Launcher}
歷史#5:HistoryRecord {40978318 com.google.android.gm/.ConversationListActivity}
mLastPausedActivity:HistoryRecord {40b4aa90 com.mypackage / com.mypackage.ActivityB}
有誰知道這種情況應該如何運作? 天真地,我希望Android能夠通過后台堆棧工作,直到它到達LoginActivity ...
我相信Android保留銷毀任何不再在前台的Activity的權利,所以這里的行為是不確定的?
這個應用程序非常復雜,所以我不能完全拋棄現有的設計。 有許多入口點(窗口小部件,通知,后退按鈕),以及依賴於被告知應用程序已被中斷的UI的其他功能。
我正在調查其他解決方法(例如使用startActivityForResult
,為ActivityB設置Intent.FLAG_ACTIVITY_NO_HISTORY
等),但我很想知道Android如何通過堆棧工作。
完成()您的活動后,將其從堆棧中刪除。
除非再次創建,否則你不能再回頭了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.