現在我正在使用PendingIntent
從Notification
啓動我想要的Activity
。但我想知道是否有可能重用當前的應用程序實例。當點擊通知時重用當前應用實例
例如:
- 啓動應用程序,啓動程序的活動被稱爲
HomeActivity
- 導航到
SecondActivity
- 按home鍵
- 點擊來自應用程序的通知,並恢復
SecondActivity
但是,如果用戶沒有導航到th我想打開HomeActivity
當我點擊通知。我會很高興有關這個問題的任何幫助:)
現在我正在使用PendingIntent
從Notification
啓動我想要的Activity
。但我想知道是否有可能重用當前的應用程序實例。當點擊通知時重用當前應用實例
例如:
HomeActivity
SecondActivity
SecondActivity
但是,如果用戶沒有導航到th我想打開HomeActivity
當我點擊通知。我會很高興有關這個問題的任何幫助:)
但我想知道是否有可能重用當前的應用程序實例。
是的,如果應用程序在後臺,您可以重複使用。在的PendingIntent,你會經過一個意圖,所以在這個意圖您應該設置一個標誌像intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
所以如果應用程序是在後臺將只是把活動前。
根據Android的文檔:
FLAG_ACTIVITY_NEW_TASK
在API級別1 INT FLAG_ACTIVITY_NEW_TASK如果設置,這個活動 將成爲這段歷史堆棧上的新任務的開始。任務 (從開始它到下一個任務活動的活動)定義了 用戶可以移動到的活動的原子組。任務可以將 移到前臺和後臺;特定任務的 內的所有活動始終保持相同的順序。請參閱任務和 返回堆棧以獲取有關任務的更多信息。
這個標誌是普遍使用的是要呈現 「發射」式的行爲活動:它們給用戶的單獨 事情是可以做的,否則運行完全獨立 活動推出它們的列表。
使用此標誌時,如果任務已在運行 您現在正在啓動,則不會啓動新的活動; 取而代之的是,當前任務將被簡單地置於 屏幕的前端並顯示其狀態。請參閱FLAG_ACTIVITY_MULTIPLE_TASK 以獲取禁用此行爲的標誌。
當調用者請求從 開始的活動的結果時,不能使用此標誌。
檢查文檔here
但是,如果用戶沒有瀏覽到SecondActivity我想打開HomeActivity。
你爲什麼推出HomeActivity如果要創建您的通知的意圖類有SecondActivity作爲發射器。它將創建一個新的SecondActivity,並在不在後臺時啓動它。
編輯:
如果你想重新啓動應用程序在你離開去嘗試這樣的:
final Intent resumeIntent = new Intent(context, YourLauncher.class);
resumeIntent.setAction("android.intent.action.MAIN");
resumeIntent.addCategory("android.intent.category.LAUNCHER");
final PendingIntent resumePendingIntent = PendingIntent.getActivity(context, 0, resumeIntent, 0);
這裏YourLauncher.class
是啓動類的名稱。
我想知道是否有可能具有相同的功能,當我點擊通知,因爲我在應用程序切換器中,只需重新進入應用程序,無論我離開它。 – finki
你可以使用'intent.setAction(「android.intent.action.MAIN」);''和'intent.addCategory(「android.intent.category.LAUNCHER」);'在你離開的地方啓動應用程序。 –
'final Intent resumeIntent = new Intent(「android.intent.action.MAIN」); \t resumeIntent.addCategory(「android.intent.category.LAUNCHER」); final PendingIntent resumePendingIntent = PendingIntent.getActivity(context,0,resumeIntent,0);' 這對我不起作用 – finki
在pendingIntent中,您將傳遞一個意圖,因此在這個正常的意圖中,您應該設置一個像'intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)'這樣的標誌;'如果應用程序在後臺,它會將活動放在前面。 –