2011-02-22 26 views
0

我有這種情況與Activity堆棧有關,但我已經足夠新到Android開發人員,現在不知道如何響應它。通知開放活動和後退按鈕?限制爲一個實例?

我有一個像秒錶一樣的應用程序。當您啓動它時,正在進行的通知會進入通知欄,並會一直保持,直到您停止秒錶。我注意到,如果我的秒錶正在前臺運行,並且我觸摸通知,它會創建一個秒錶活動的新實例,並將舊的實例移出屏幕。這會產生後退按鈕的問題(您按回來,新實例消失以顯示舊實例)。這很有道理,但我不希望它發生這樣的事情。我能做些什麼來防止我的應用程序的多個實例運行?

+0

您在提問時應該使用DRY原則。我不認爲有必要在你的問題中加入「[Android]」,當你用android標籤標記它時。 – 2011-02-22 22:08:24

回答

4

我該怎麼做才能防止我的應用程序的多個實例運行?

在你Intent您與PendingIntent使用的Notification,添加setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);,無論行爲符合您的需求更好。

+0

他們的行爲有什麼不同? – 2011-02-23 06:07:00

+0

@Corey Ogburn:如果您有多個活動,那麼'CLEAR_TOP'變體將會刪除任務歷史記錄,只留下由'Notification'觸發的活動。 「REORDER」變體只是將現有活動拉到前臺,使任何其他活動仍留在任務歷史記錄中。這些標誌的文檔有更多細節。 – CommonsWare 2011-02-23 11:54:47

1

您也可以禁用後退按鈕。不像CommonsWare解決方案那麼優雅,但有些選項沒有問題!

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { 
     return true; 
    } 

    return super.onKeyDown(keyCode, event); 
} 
相關問題