2013-01-24 95 views
4

說我的應用程序正常運行,顯示活動A.然後用戶鎖定手機。一個盡職的睡覺(onPause())。在屏幕關閉的某個時候,我需要向用戶展示一些東西。所以從我的後臺代碼(服務),我稱之爲startActivity爲B,通過以下標誌:鎖定屏幕上的活動 - 解散它恢復之前的活動

FLAG_ACTIVITY_CLEAR_TOP 
FLAG_ACTIVITY_NEW_TASK 

而在B的onCreate(),我添加了下面的窗口標誌

FLAG_SHOW_WHEN_LOCKED 
FLAG_TURN_SCREEN_ON 
FLAG_DISMISS_KEYGUARD 

這一切工作正常 - B現在出現在鍵盤上。

在稍後的一點,我想解僱B,所以從B內部我打電話dismiss(),按預期工作。這裏是出錯的地方: 現在我沒有返回到鎖定屏幕,而是在鎖定屏幕上運行A.

當我解僱B時,如何阻止操作系統恢復A?

謝謝。

+0

我有一個類似的問題,我還沒有解決幾個月,我終於想通了。 B顯示很好,但是一旦我解僱它,一旦我解鎖了鎖屏,A就會彈出。我用一些靜態變量解決了它,但它並不理想。 –

+0

亂搞一下之後,我在啓動我的Activity時使用了'Intent.ACTIVITY_MULTIPLE_TASK',因爲我在鎖定屏幕上顯示的活動是獨立的 - 它需要的是一些共享首選項,但不依賴於其他活動。 –

+0

嗯..在我的情況下,將無法正常工作。在最近的應用程序列表中,我有我的應用程序顯示與屏幕B(或有時,沒有最近的應用程序).​​.如果我的應用程序運行之前鎖定電話(無論是在後臺或前臺),我會喜歡它保持在鎖定之前的狀態(如此運行,無論是在後臺還是前臺) – user1537915

回答

0

如果我猜對比Android,只顯示屬於您的應用程序的Activity堆棧上的下一個Activity。我會嘗試撥打另一個應用,例如活動B出口處的主屏幕,以便鎖屏快速跳到前面。

您也可以嘗試使用該標誌FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS

如果設置,新的活動沒有保存在最近推出的活動清單。

+0

但是調用沒有標誌顯示在鎖屏上的其他活動確實可以確保一旦屏幕被解鎖,我開始的任何活動都將可見 - 但是,它仍偏離了android的標準行爲,這是顯示手機狀態的先決條件鎖定 - 這就是我想要複製的。 我已經進一步了..根據[這個問題的答案]重新鎖定屏幕(http://stackoverflow.com/questions/9633972/lock-phone-using-a-android-application? rq = 1)將會回到鎖定屏幕 - 現在只有在解鎖後A沒有顯示的情況下,我纔會是金色的。 – user1537915