2015-04-20 69 views
2

似乎我的MainActivity的onNewIntent()沒有被調用,當我有另一個Activity的頂部,如果我關閉第二個Activity它確實被稱爲很好,它是像其他Activity這是頂部阻止消息?這兩個Activity s的設置在艙單singleTop,我從通知設置IntentonNewIntent()當頂部有另一個活動時沒有被調用

Intent intent = new Intent(getApplicationContext(), MainActivity.class); 
intent.setAction(Intent.ACTION_MAIN); 
intent.addCategory(Intent.CATEGORY_LAUNCHER); 
PendingIntent pIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

有誰知道什麼地方出錯了?

謝謝!

+2

如果另一個「活動」在現有的「活動」中可見,則第一個將暫停,然後停止。因此第一個'Activity'中的代碼將不會被執行。這是Android和「Activity」生命週期的標準。 – Squonk

+0

因此,如果我想在通知被點擊並且頂部有其他活動時調用某個函數,那麼如何在不創建新活動的情況下執行此操作? – eXistenZ

回答

1

你可能已經搜索谷歌 - 有很多關於爲什麼onNewIntent沒有被調用的問題。

這可能取決於您正在測試哪個Android版本,但是您可以嘗試爲您的意圖添加Intent.FLAG_ACTIVITY_SINGLE_TOP標誌 - 即使您已在清單中加入Intent.FLAG_ACTIVITY_SINGLE_TOP標誌,也可以使用Intent.FLAG_ACTIVITY_CLEAR_TOP

intent.setFlag(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);

這將刪除您希望啓動的活動上方的活動。

但是,如果您的意圖是讓兩個活動保持活動狀態,並在它們之間切換,請查看android:taskAffinityFLAG_ACTIVITY_NEW_TASK

+0

我試過添加Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP,但它沒有關閉頂部的活動,它什麼都不做。對我來說關閉主要活動之上的任何活動都可以。任何想法,爲什麼它不工作? – eXistenZ

+0

其實它工作得很好,不知道爲什麼它不是第一次,謝謝! – eXistenZ

+0

實際上,它似乎並不是一直都在工作,很奇怪 - 如果我按下主頁按鈕,然後點擊通知,它就不會再清除它上面的活動,它只是將它帶到視圖中。 – eXistenZ

1

驗證是否爲接收意圖的活動設置了正確的啓動模式。在其包裝中將launchMode設置爲「singleTop」,或者如果客戶在撥打startActivity(Intent)時使用了FLAG_ACTIVITY_SINGLE_TOP標誌。

+0

它被設置爲singleTop,但看起來像Squonk指出的那樣,當它上面有另一個活動時,下面的活動將不會執行任何代碼。 – eXistenZ

相關問題