在我的主活动中加载Web视图,具体取决于它的启动位置决定了要加载的网址。
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时,它会保持默认状态。
我对Flags不太确定,我之前确实遇到过这个问题,它是一个固定它的标志组合。
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);
非常感谢帮助。
修改的
如果我添加标志PendingIntent.FLAG_CANCEL_CURRENT这几乎解决了这个问题,虽然它重新加载了整个主要活动(Splash屏幕被调用),我希望它重用现有的webview。
答案 0 :(得分:1)
这是您正在寻找的旗帜:FLAG_ACTIVITY_CLEAR_TASK
如果在传递给Context.startActivity()的Intent中设置,则此标志将为 导致任何与活动相关联的现有任务 在活动开始前清除。也就是活动 成为一个空的任务的新根,和任何旧的任务 活动结束了。这只能与。一起使用 FLAG_ACTIVITY_NEW_TASK。
修改强> 如果您将webview代码放在onResume中,然后不使用任何标志,它应该可以正常工作。