簡體   English   中英

如果后台堆棧中的活動已完成,“返回”按鈕是否會返回到之前的“活動”?

[英]If Activities in the back stack are finished, will Back button return to earlier Activities?

摘要

這是我的情景:

  • 我的應用程序啟動了一個外部應用程序(PDF查看器)。
  • 然后我完成()我的Activity啟動了該應用程序(我的應用程序中的其他活動仍然在Activity堆棧中)。
  • 如果用戶按下Back,那么它只退出該應用程序而不是返回到我的應用程序。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM