2016-07-22 158 views
2

我正在爲現有的遊戲引擎寫一個自己的插件(可以說它是與主應用程序有關的第三方lib)。Android:如何設置Acivity.onNewIntent()的偵聽器?

因此,我無法訪問MainActivity來源。

不過,我必須對主要活動lifecycle事件(onCreate, onDestroy, onPause, onResume, onNewIntent和一些不重要的其他)作出反應。

感謝Application.ActivityLifecycleCallbacks,我對他們中的大多數人沒有任何問題。

問題發生在onNewIntent()。我無法找到此事件的listener,並想象一種處理它的方法。

有沒有人知道如何捕捉onNewIntent事件(當然,除了覆蓋它)?

回答

1

onNewIntent()適用於singleTopsingleTask活動,已經在堆棧上運行其他地方。如果在MainActivity不與singleTop聲明或singleTask屬性,即使您使用下面的代碼,它不會工作:

@Override //won't be called if no singleTop/singleTask attributes are used 
protected void onNewIntent(Intent intent) { 
    super.onNewIntent(intent); 
    // ...  
} 

爲了確保所有設置邏輯大呼過癮,最好是使用的onResume()利用getIntent( )。

@Override 
protected void onResume() { //will be called in any cases 
    super.onResume(); 
    // getIntent() should always return the most recent   
} 
+0

在onResume中獲取意圖並將其與前一個意向進行比較聽起來像是一個不錯的主意。如果意圖不同,我可以做我必須做的新意圖。在我的情況下,延遲是可以接受的。公認。 ) – Papirosnik