gpt4 book ai didi

android - 正确使用 Intent 标志

转载 作者:行者123 更新时间:2023-11-29 01:49:35 25 4
gpt4 key购买 nike

在加载 Webview 的主 Activity 中,根据启动它的位置确定要加载的 url。

Bundle extras = getIntent().getExtras();
if (extras != null) {
String theurl = getIntent().getExtras().getString("url");
webView.loadUrl(theurl);
} else {
webView.loadUrl("http://mysite.com");
}

如果应用程序是一个新实例并从主屏幕加载,它会加载默认 url。

如果应用程序未运行并且我点击了通过谷歌云消息传递发送的通知,应用程序将加载自定义 url。

这按预期运行。

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

我对 Flags 不是很确定,我以前确实遇到过这个问题,是通过特定的 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 这几乎可以解决问题,虽然它会重新加载整个主要 Activity (启动画面被调用),但我希望它重用现有的 webview。

最佳答案

这是您正在寻找的标志:FLAG_ACTIVITY_CLEAR_TASK

If set in an Intent passed to Context.startActivity(), this flag will cause any existing task that would be associated with the activity to be cleared before the activity is started. That is, the activity becomes the new root of an otherwise empty task, and any old activities are finished. This can only be used in conjunction with FLAG_ACTIVITY_NEW_TASK.

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

关于android - 正确使用 Intent 标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19073406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com