2011-12-08 31 views
2

我從WhatsApp觀察到這樣的行爲:當新消息到達時,WhatsApp將啓動對話式活動,此類活動可能會被用戶取消或確認。啓動對話式活動時的意外行爲

因此,我爲我的應用程序添加了類似的對話式活動。出於測試目的,我還添加了警報管理器和警報接收器,以便警報接收器每10秒啓動一次該活動。

我用來啓動對話式活動的代碼是:如果我的申請沒有被推出

Intent dialogIntent = new Intent(MyApplication.sharedApplication, MyDialogStyleActivity.class); 
    dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    MyApplication.sharedApplication.startActivity(dialogIntent); 

一切似乎都很正常。對話活動將顯示,後面是主屏幕,就像WhatsApp的行爲一樣。

但是有一個問題,如果我的應用程序已經啓動並放在後臺,然後警報觸發對話框活動的啓動,在啓動對話框活動之前,我的應用程序的主要活動就會到來回到前景並顯示。

我很困惑,我現在想要的是,即使我的應用程序已啓動,當某些事件觸發對話式活動時,只有此對話式活動纔會顯示,沒有主要活動或任何其他聯合國相關的活動。

任何人都可以幫忙嗎?

回答

4

您的應用程序維護一個活動堆棧。所以你的主要活動A和你的對話活動B在你的應用程序的活動堆棧中被表示爲A-> B。

當你的應用程序啓動並放到後臺。當您的對話活動被調用並被帶到前臺時,您的主要活動A仍然存在,因此也會顯示。也許你可以在startActivity(dialogActivity)之後在A中調用「finish()」來確保A完成並消失。