2011-04-27 113 views
0

我有一個小部件,可以在點擊時彈出小對話框。這些對話框由singleInstance launchMode中名爲RemoteActivity的活動顯示。在其中一個對話框中,有一個按鈕用於啓動具有標準launchMode的主應用程序MainActivity。如何從singleInstance活動開始活動?

但是,當單擊此按鈕並調用startActivity()時,雖然我可以在logcat中看到相應的「Starting activity:Intent {...}」,但未啓動MainActivity。

如果我將RemoteActivity的launchMode設置爲標準,那麼MainActivity會啓動,但這不是我想要的,RemoteActivity只是widget的擴展,我不希望它與任何其他活動堆疊。

我也試圖與FLAG_ACTIVITY_NEW_TASK,但它並沒有幫助,而且它不應該是必要的反正according to the docs

A「singleInstance」活動,對 另一方面,允許沒有其他 活動成爲其任務的一部分。 這是該任務中唯一的活動。如果 它啓動另一個活動,那麼 活動被分配給不同的 任務 - 就好像FLAG_ACTIVITY_NEW_TASK 的意圖。

如何啓動我的主要活動?

UPDATE /勘誤表:

在MainActivity實際上推出,但只有當它是不是已經是任務的一部分。如果我通過啓動程序正常啓動MainActivity,然後按Back退出,則RemoteActivity會啓動MainActivity。

但是,如果不按下返回,我按Home離開MainActivity,然後RemoteActivity無法啓動MainActivity,儘管意圖出現在logcat中。

我在Froyo測試這個。

有什麼想法發生了什麼?

回答

0

我發現這個問題:只有在RemoteActivity的startActivity()之前調用finish()時纔會發生此行爲。如果我在finish()之前調用startActivity(),那麼MainActivity是否已經是現有任務的一部分,它可以正常工作。

去圖...

0

也許noHistory flag將工作爲你正在尋找什麼?

+0

我剛剛試圖添加noHistory到RemoteActivity,它並沒有幫助。我不打算將它添加到MainActivity中,我不想要它,它必須是歷史的一部分。順便說一下,有一個微妙的,請參閱我的「更新」。 – olivierg 2011-04-27 13:44:59