安卓:如何为Activity.onNewIntent()设置监听器?

4

我正在为一款现有的游戏引擎编写自己的插件(可以说是与主应用程序相关的第三方库)。

因此,我无法访问 MainActivity 的源代码。

尽管如此,我仍然需要以某种方式对主活动的生命周期事件(onCreate、onDestroy、onPause、onResume、onNewIntent 和其他一些不重要的事件)做出反应。

由于使用了 Application.ActivityLifecycleCallbacks,所以我可以很好地处理大多数问题。

问题出现在 onNewIntent()上。我找不到这个事件的listener,也无法想象出处理它的方法。

有人知道如何捕获onNewIntent事件吗(当然,除了重写它)?

1个回答

5

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        
}

在onResume中获取意图并将其与先前的意图进行比较听起来不错。如果意图不同,我可以为新意图执行必要的操作。在我的情况下,稍微有些滞后是可以接受的。接受。 - papirosnik
1
这个行得通吗?根据Activity.onNewIntent的javadoc:“请注意,getIntent()仍然返回原始Intent。您可以使用setIntent(Intent)将其更新为新的Intent。” - conca

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接