2016-07-22 108 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