Android 正确使用意图标志

Android 正确使用意图标志,android,android-intent,android-pendingintent,Android,Android Intent,Android Pendingintent,在我的主要活动中,加载Web视图取决于它从何处启动决定了要加载的url Bundle extras = getIntent().getExtras(); if (extras != null) { String theurl = getIntent().getExtras().getString("url"); webView.loadUrl(theurl); } else { webV

在我的主要活动中,加载Web视图取决于它从何处启动决定了要加载的url

Bundle extras = getIntent().getExtras();
       if (extras != null) {
           String theurl =  getIntent().getExtras().getString("url");
            webView.loadUrl(theurl);    
       } else {
             webView.loadUrl("http://mysite.com");
       } 
如果应用程序是新实例并从主屏幕加载,则加载默认url

如果应用程序未运行,我单击通过google云消息发送的通知,应用程序将加载自定义url

这与预期的一样

我的问题在于,当应用程序已经在后台运行时,当我单击一个通知时,它会将应用程序带到前端,但不会加载新的url,它将保持默认状态

我不太确定标志,我以前确实有这个问题,是标志的某种组合解决了这个问题

        Intent notificationIntent = new Intent(context, MainActivity.class);
    notificationIntent.putExtra("url", url);

    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK );

    int requestID = (int) System.currentTimeMillis();

    PendingIntent intent = PendingIntent.getActivity(context, requestID, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT);
非常感谢您的帮助

编辑


如果我添加标志PendingEvent.flag\u CANCEL\u CURRENT,这几乎解决了问题,尽管它重新加载了整个主活动(启动屏幕被调用),但我希望它重用现有的webview。

这就是您要查找的标志:flag\u activity\u CLEAR\u TASK

如果在传递给Context.startActivity()的意图中设置,则此标志将 使将与活动关联的任何现有任务 在活动开始之前,必须清除。就是活动, 成为其他空任务的新根,以及任何旧根 活动结束了。这只能与 标记\u活动\u新任务

编辑:
如果您将webview代码放在onResume中,然后不使用任何标志,它应该可以正常工作。

我刚刚尝试了您的建议。这将重新加载整个活动(启动屏幕)。我希望它能重用现有的webview并简单地更改url。嗯,我删除了所有标志并移动了webview,虽然它仍然不起作用,但我很确定我上次的解决方案也是类似的,但我不记得必须将整个webview移动到onresume。很可能是我犯了一个愚蠢的错误,现在是凌晨3点,所以我会睡上一觉,然后在早上再次攻击它。@Guernica好的,明天它应该可以工作了,如果你能发布你的更新代码,我可以看一下是的,我会在早上发布我的代码,问题似乎是,当Inner onresume时,通过intent(url)传递的额外数据丢失了。是的,我尝试了几种不同程度的成功方法,但没有完全解决。谢谢你的帮助。