0

我有一個android應用程序,其中有HomeActivity作爲所有其他活動的父活動。意思 - 我總是有一個它的實例,如果你按任何活動的按鈕,它會帶你到這個活動。android - 從應用程序啓動時提供後退導航

現在,可以從通知中啓動應用程序。

當用戶點擊該通知,從我做起RidesActivity(其他activites之一),在這種情況下,如果我按回來,關閉應用程序(沒有HomeActivity實例)。

我能以啓動HomeActivity實例的背景,並確保當用戶點擊,它會去HomeActivity辦?

回答

2

當您按下返回按鈕時,Android會返回上一個活動,但在您的位置沒有最後一個活動,因爲您直接啓動了RidesActivity。

要解決此問題,您可以通過通知中的Intent而不是您的RidesActivity啓動MainAcivity,並將一些額外的信息直接啓動RidesActivity。

代碼爲您的通知:

Intent intent = new Intent(context, MainActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //is important to start the activity from a notification 
intent.putExtra("startRidesActivity", true); 
startActivity(intent); 

代碼爲您的MainActivity,onCreate方法:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    /* 
    * Put the following at the end of this method 
    */ 
    Bundle bundle = getIntent().getExtras(); 
    if(bundle!=null && bundle.containsKey("startRidesActivity")){ 
     Intent intent = new Intent(this, RidesActivity.class); 
     startActivity(intent); 
    } 
} 

就是這樣。現在你的通知打開MainActivity,MainActivity直接開始你的RidesActivity。如果你點擊後退按鈕,你應該看到你的MainActivity,而不是你的主屏幕。

+0

很好的答案!非常感謝。只是所以我知道,爲什麼從通知開始活動時添加NEW_TASK標誌很重要?在其他情況下,你需要把這個標誌? –

+0

這很重要,因爲通知不會在您的應用程序的上下文中運行,並且Android需要此信息才能在「新任務」中啓動您的應用程序。這裏很好解釋:http://stackoverflow.com/questions/30886618/android-notification-intent-flag-activity-new-task-required – Larcado

+0

明白了。此外,如果我在應用程序中收到通知,並且我點擊它 - 我將按照以下順序執行活動:RidesActivity-> HomeActivity->正在運行的其他任何活動。我應該在點擊通知時殺死所有其他活動嗎? –

相關問題