2011-04-21 64 views
3

我想有一個目標的Android 2.1的應用程序,API 7級,同時當用戶點擊該已經在C2DM通知啓動多個活動這是我目前用它來啓動我的活動方法:如何近似Api級別7(Android 2.1)中的PendingIntent getActivities? 。

public static PendingIntent getActivity (Context context, int requestCode, Intent intent, int flags) 

該方法只允許我將一個活動放在堆棧上。我真正想要做的就是使用這種方法:

public static PendingIntent getActivities (Context context, int requestCode, Intent[] intents, int flags) 

此方法報告它只適用於API級別11,即Android 3.0。我不希望向後兼容2.1。任何人都可以建議我如何能夠實現這種效果,而不依賴於Android 3.0?我試過looking for the source這個新方法,但它似乎還沒有可用。

+0

「......一次啓動多項活動......」 - 您爲什麼要這樣做?在任何特定時間只能看到一個活動(大多數情況下活動)。 – Squonk 2011-04-21 05:34:35

+0

@esilver你最終得到了什麼,我面臨同樣的問題你最終做了什麼?請幫助 – user4o01 2012-09-22 18:12:22

+0

基本上我添加一個特殊的布爾標誌的意圖,並始終啓動我的根活動。根活動檢查特殊標誌,如果存在,它將啓動第二個活動並將其放入堆棧。 – esilver 2012-09-23 02:36:00

回答

-1

正如MisterSquonk在評論中所說的,任何時候只有一個活動可以在任何時候活動(即使是3.0),因此不可能同時啓動「多個活動」。即使是這樣,用戶體驗會如何快速連續開始多個活動,並且不保證最後會發布哪些活動,因此是用戶與其交互的一個。

我懷疑你實際上是想同時喚醒你的應用程序的不同部分,而不是每個人都有自己的UI。如果是這樣,那麼我會建議有一個或多個服務實現多個BroadcastReceivers針對共同的意圖過濾器。當你播放該事件的廣播時,多件事物會立即醒來。

+2

我有一個消息傳遞UI活動和一個收件箱活動。我希望通知將您直接帶入郵件中,並通過後退按鈕將您帶到收件箱中,然後再按下一個按鈕將您帶到您所在的位置。我不認爲有多個服務對同一廣播作出反應是正確的,因爲我不會保證活動的顯示順序。 – esilver 2011-04-21 15:47:47

+1

在這種情況下,您需要啓動一個Intent來啓動收件箱活動,並附加詳細的消息ID。然後收件箱意圖應該啓動消息查看活動。這樣你會得到你想要的後退按鈕行爲。 – 2011-04-26 08:41:37

1

你所做的是有一個單獨的活動,是警報的目標,並從那裏建立意圖堆棧,如下所示。這大概可以概括爲非常像'getactivities'的東西 - 可惜它不在compat庫中。

public class AlarmActivity extends Activity { 

    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    Intent intent = new Intent(this, MainActivity.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(intent); 

    intent = new Intent(this, ChildActivity.class); 
    startActivity(intent); 

    finish(); 
    } 
} 
相關問題