0

現在我正在使用PendingIntentNotification啓動我想要的Activity。但我想知道是否有可能重用當前的應用程序實例。當點擊通知時重用當前應用實例

例如:

  • 啓動應用程序,啓動程序的活動被稱爲HomeActivity
  • 導航到SecondActivity
  • 按home鍵
  • 點擊來自應用程序的通知,並恢復SecondActivity

但是,如果用戶沒有導航到th我想打開HomeActivity當我點擊通知。我會很高興有關這個問題的任何幫助:)

+0

在pendingIntent中,您將傳遞一個意圖,因此在這個正常的意圖中,您應該設置一個像'intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)'這樣的標誌;'如果應用程序在後臺,它會將活動放在前面。 –

回答

0

但我想知道是否有可能重用當前的應用程序實例。

是的,如果應用程序在後臺,您可以重複使用。在的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是啓動類的名稱。

+0

我想知道是否有可能具有相同的功能,當我點擊通知,因爲我在應用程序切換器中,只需重新進入應用程序,無論我離開它。 – finki

+0

你可以使用'intent.setAction(「android.intent.action.MAIN」);''和'intent.addCategory(「android.intent.category.LAUNCHER」);'在你離開的地方啓動應用程序。 –

+0

'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

相關問題