2011-10-02 49 views
0

我有兩項活動。一個活動具有主遊戲,而另一個活動具有遊戲結束屏幕,這實際上只是一個自定義警報對話框。在屏幕上的遊戲中有一個按鈕,點擊後會啓動一個新的活動。使用SingleInstance啓動新內容

String authUrl = httpOauthprovider.retrieveRequestToken(httpOauthConsumer, OAUTH_CALLBACK_URL); 
      Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl));    
      intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
      startActivity(intent); 

的頁面是一個Twitter授權頁面,但我遇到的問題是,當我點擊授權應用按鈕的活動與警報對話框再次啓動(調用創建的,而不是onNewIntent)。

我試過不同的啓動模式(singleInstance,singleTask和singleTop)。

他們每個人都有他們的問題。 singleInstance和singleTask將清除原始調用活動,以便在原始活動中的AlertDialog滑動時更改爲菜單頁。 singleTop總是先調用create(儘管它不會調用onDestroy)

有沒有人有任何建議或例子可以讓我完成這件事?

順便說一句,調用遊戲活動的活動是一個標準的launchmode提前

+0

你嘗試'singleTask' +'taskAffinity'的?(http://developer.android.com/guide/topics/manifest/activity-element.html#aff)我沒有嘗試過,但通過文檔,該組合應符合您的要求。 – kingori

+0

只是試了一下。我給了兩個活動相同的affinityName(我想這是建議),但它有相同的反應。使用singleTask時,調用Activity總是從堆棧中消失。 –

+0

@Wise之一:「其他活動的遊戲在屏幕上,這實際上只是一個自定義警報對話框。」 - 爲什麼?爲什麼不在沒有對話的情況下進行簡單的活動?或者,爲什麼不只是以對話爲主題的活動?爲什麼只有一個活動只顯示對話框?作爲獎勵,它應該清除你的問題,因爲你不會有一個警告對話框。 – CommonsWare

回答

0

我最終什麼事做

由於是撥打電話從原來的調用者的新的活動。因此,當我選擇從自定義警報對話框發佈消息時,我會關閉警報對話框活動,並請求發送推文,並從原始活動中調用第三個活動(Twitter授權)。這不是我正在尋找的答案,但這是我解決問題的方法。如果有人知道更好的雄辯解決方案,我很想知道它。

所以流現在去A-> B-> A-> C-> A-> B,而不是A-> B-> C->乙