2017-04-21 43 views
0

我有我的應用程序來執行通知,當一個給定的情況發生。Android - 通知和生命週期

目標意圖是我的應用程序的主類活動。

如果我點擊抽屜中的通知,並且我的應用程序已經在運行,那麼會創建一個類的新實例(我可以告訴它是來自調試器的一個新類)。

當新創建的窗口出現時,它顯示爲我的應用程序,當我查看正在運行的任務,但是該應用程序的唯一實例。

  1. 我的Activity類的原始實例發生了什麼,以及原始應用程序實例發生了什麼?

  2. 我可以確定活動只有一個實例在運行嗎?

感謝

+0

在清單中爲你的'Activity'添加標籤'android:launchMode =「singleInstance」' - ref:https://developer.android.com/guide/components/activities/tasks-and-back-stack .html –

+0

謝謝@MarkKeen – MHugh

回答

1

1)原始實例應該還是有的,但在堆棧中。你應該可以通過後退按鈕來訪問它。 https://developer.android.com/guide/components/activities/tasks-and-back-stack.html

2)馬克基恩的答案在這裏是正確的 - 使用android:launchMode =「singleInstance」爲您的Android清單中的活動標記。 https://developer.android.com/guide/topics/manifest/activity-element.html

+0

謝謝@karljamoralin – MHugh

+0

在我的具體情況下,我有一個活動,當用戶在通知抽屜中選擇通知時,正在觸發該活動。此活動對我感興趣的活動調用StartActivity以保持單個實例。第一個活動使用intent.PutExtra()將有關通知的信息傳遞給第二個實例。但是,當它在OnResume()中醒來時,我的單個實例現在不能再通過Intent.Extras.GetString()訪問此信息。活動新實例的最佳實踐可以將數據傳遞給正在被喚醒的活動的單實例 – MHugh

+0

您需要在單實例活動中重寫'onNewIntent(意圖意圖)'。演員將以「意圖」形式出現。 –