我有這種情況與Activity堆棧有關,但我已經足夠新到Android開發人員,現在不知道如何響應它。通知開放活動和後退按鈕?限制爲一個實例?
我有一個像秒錶一樣的應用程序。當您啓動它時,正在進行的通知會進入通知欄,並會一直保持,直到您停止秒錶。我注意到,如果我的秒錶正在前臺運行,並且我觸摸通知,它會創建一個秒錶活動的新實例,並將舊的實例移出屏幕。這會產生後退按鈕的問題(您按回來,新實例消失以顯示舊實例)。這很有道理,但我不希望它發生這樣的事情。我能做些什麼來防止我的應用程序的多個實例運行?
我有這種情況與Activity堆棧有關,但我已經足夠新到Android開發人員,現在不知道如何響應它。通知開放活動和後退按鈕?限制爲一個實例?
我有一個像秒錶一樣的應用程序。當您啓動它時,正在進行的通知會進入通知欄,並會一直保持,直到您停止秒錶。我注意到,如果我的秒錶正在前臺運行,並且我觸摸通知,它會創建一個秒錶活動的新實例,並將舊的實例移出屏幕。這會產生後退按鈕的問題(您按回來,新實例消失以顯示舊實例)。這很有道理,但我不希望它發生這樣的事情。我能做些什麼來防止我的應用程序的多個實例運行?
我該怎麼做才能防止我的應用程序的多個實例運行?
在你Intent
您與PendingIntent
使用的Notification
,添加setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
或setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
,無論行爲符合您的需求更好。
他們的行爲有什麼不同? – 2011-02-23 06:07:00
@Corey Ogburn:如果您有多個活動,那麼'CLEAR_TOP'變體將會刪除任務歷史記錄,只留下由'Notification'觸發的活動。 「REORDER」變體只是將現有活動拉到前臺,使任何其他活動仍留在任務歷史記錄中。這些標誌的文檔有更多細節。 – CommonsWare 2011-02-23 11:54:47
您也可以禁用後退按鈕。不像CommonsWare解決方案那麼優雅,但有些選項沒有問題!
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
return true;
}
return super.onKeyDown(keyCode, event);
}
您在提問時應該使用DRY原則。我不認爲有必要在你的問題中加入「[Android]」,當你用android標籤標記它時。 – 2011-02-22 22:08:24