2011-05-23 52 views
1

有沒有辦法在應用程序之外創建某種彈出式窗口,例如警報對話框?這個問題的背景是我需要在推送通知的情況下向用戶顯示某些內容。基本上,用戶會收到一些消息,即使應用程序當前未打開,應用程序也會收到該消息,並且用戶的任務欄中會顯示通知。如果用戶在任務欄中打開通知,我希望彈出窗口完全獨立於應用程序。應用程序之外的警報對話框(不在活動中)

唯一的解決辦法,我發現到目前爲止是調用與Theme.Dialog設置創建一個警告對話框的活動。這個解決方案的問題是,如果應用程序已經打開,Activity將被添加到Activity Stack中。所以我得到了不一致的行爲,因爲如果應用程序已關閉,那麼彈出窗口將按我的意願工作,並將顯示在用戶當前所在的任何應用程序中。但是,如果應用程序已打開但尚未處於焦點狀態,那麼焦點將切換到我的應用程序,然後顯示對話框。

理想情況下,我想,如果他們選擇彈出顯示獨立的應用程序,用一個按鈕來將用戶重定向到應用程序,或者乾脆關閉通知,並繼續不管他們正在做的。

任何人有任何想法?

回答

5

不,你不能。但是你可以用launchMode發揮,使其在任務中唯一的活動:

http://developer.android.com/guide/practices/ui_guidelines/activity_task_design.html

的「singleTask」和「singleInstance」模式也各不相同只在一個方面:一個「singleTask 「活動允許其他活動成爲其任務的一部分。它始終是其任務的根源,但其他活動(必然是「標準」活動和「單一活動」)可以啓動到該任務中。另一方面,「單一實例」活動不允許其他活動成爲其任務的一部分。這是該任務中唯一的活動。如果它啓動另一個活動,那麼該活動將分配給其他任務 - 就好像FLAG_ACTIVITY_NEW_TASK在意圖中一樣。

+1

謝謝,終於得到了這個工作。我的警報活動被配置爲一個Theme.Dialog,並使用launchMode =「singleInstance」。我不確定爲什麼其他launchModes不起作用,因爲只要我在意圖上設置了FLAG_ACTIVITY_NEW_TASK,它就應該可以在任何模式下工作,但事實並非如此。 – mnemy 2011-05-24 21:52:32