onNewIntent没有被调用

时间:2017-02-13 06:05:10

标签: android android-intent start-activity

我通过调用start活动开始了自己的新活动。但是在活动开始后,在方法onNewIntent中,finish()不会被调用!!

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();
    }
}

3 个答案:

答案 0 :(得分:2)

<强> FYI

首先

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

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

意图

中致电 finish()
Intent intent1 = new Intent(getBaseContext(), WebActivity.class);
intent1.putExtra("url",intent.getStringExtra("url"));
finish();
startActivity(intent1)

您也可以尝试 FLAG_ACTIVITY_NO_HISTORY

  

如果设置,则新活动不会保留在历史堆栈中。立刻   用户离开它,活动结束。这可能   也可以使用noHistory属性设置。

答案 1 :(得分:2)

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

我把它放在这个活动被调用的地方。

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

然后它的作品就像一个魅力!!。

这是因为调用了新活动。而FLAG_ACTIVITY_SINGLE_TOP会使onNewIntent被调用。此FLAG_ACTIVITY_SINGLE_TOP 不会启动新活动

答案 2 :(得分:0)

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

这就产生了一个问题,因为只要活动从之前的状态恢复,就会调用onCreate。因此,即使发生方向改变,也会调用意图处理方法。

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