onNewIntent 没有被调用

onNewIntent not get called

我通过调用 start activity 启动了一个新的 activity。但是在 activity 开始之后,在方法 onNewIntentfinish() 没有被调用!!.

WebActivity.java

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);
    if (intent.getStringExtra("url") != null) {
        Intent intent1 = new Intent(getBaseContext(), WebActivity.class);
        intent1.putExtra("url",intent.getStringExtra("url"));
        startActivity(intent1);
        finish();
    }
}

仅供参考

首先调试,然后删除不需要的行

super.onNewIntent(intent);
setIntent(intent); 

Intent

内调用 finish()
Intent intent1 = new Intent(getBaseContext(), WebActivity.class);
intent1.putExtra("url",intent.getStringExtra("url"));
finish();
startActivity(intent1)

您也可以尝试 FLAG_ACTIVITY_NO_HISTORY .

If set, the new activity is not kept in the history stack. As soon as the user navigates away from it, the activity is finished. This may also be set with the noHistory attribute.

是因为onNewIntent没有被调用!!!

我把这个放在 activity 被调用的地方。

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);

那么它的作品就像一个魅力!

是因为调用了new activity。而且FLAG_ACTIVITY_SINGLE_TOP makes onNewIntent get called. This FLAG_ACTIVITY_SINGLE_TOP不会开始新的Activity.

我在 Android 中使用 onNewIntent 进行搜索实施。当我在模拟器中使用键盘上的 Go 按钮时,我遇到了 onNewIntent 没有被调用的问题。我通过将处理意图的代码也放在 onCreate 方法中解决了这个问题。需要这样做以确保在 activity 的新实例启动时处理意图操作。

这带来了一个问题,因为每当 activity 从以前的状态恢复时也会调用 onCreate。因此,即使发生方向更改,也会调用意图处理方法。

解决方案:使用 if (savedInstanceState==null) 确定 activity 是从以前的状态恢复,还是重新搜索。