2011-10-25 43 views
3

摘要如果後退堆棧中的活動已完成,Back按鈕是否會返回到之前的活動?

這裏是我的情況:

  • 我的應用程序調用外部程序(PDF查看器)。
  • 然後我完成()我的活動,啓動該應用程序(還有其他活動從我的應用程序仍然在活動堆棧中)。
  • 如果用戶按下後退,那麼它只是退出該應用程序,而不是返回到我的應用程序。

Android應該通過Activity堆棧工作回來,直到它找到正在運行的Activity爲我的應用程序,還是會放棄它,如果它找不到以前的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}
Hist#6:HistoryRecord {40bf6008 com.mypackage/com.mypackage.LoginActivity}
Hist#5:HistoryRecord {40542d58 com.htc.launcher/.Launcher}

現在,我的ActivityB啓動一個外部PDF查看器應用程序。

我的應用程序有一些特定的安全要求,這意味着我需要強制用戶重新輸入PIN碼,然後才能再次在應用程序中看到信息。

要做到這一點,當應用程序移動到後臺時,我播放了一個Intent,它告訴ActivityA和ActivityB完成()。

當用戶在PDF查看器中按下「後退」時,我希望它們返回到LoginActivity。不幸的是,該應用似乎退出。

PDF查看器已經啓動之後,adb shell dumpsys activity顯示堆棧是:

組織胺#7:HistoryRecord {40b97a08 com.adobe.reader/.AdobeReader}
組織胺#6:HistoryRecord {40542d58融爲一體。 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,設置0123Bfor ActivityB等),但我很想知道Android如何通過堆棧工作。

回答

0

當您完成()您的活動時,將其從堆棧中移除。

除非再次創建它,否則不能回到它。

+0

我不想回到完成的活動,但我期待後退按鈕返回到我的應用程序中仍在運行的其他活動。這個假設是錯誤的嗎? –

相關問題