Webview 活动在失去焦点时调用 onDestroy()
Posted
技术标签:
【中文标题】Webview 活动在失去焦点时调用 onDestroy()【英文标题】:Webview activity calls onDestroy() when loses focus 【发布时间】:2021-11-10 10:03:35 【问题描述】:我有一个带有 web 视图的简单活动:
public class AGenericWebView extends AppCompatActivity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_a_generic_web_view);
WebView webView = findViewById(R.id.mainWebView);
ImageButton backButton = findViewById(R.id.backButton);
backButton.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
onBackPressed();
);
webView.getSettings().setjavascriptEnabled(true);
Bundle intentBundle = getIntent().getExtras();
webView.getSettings().setSaveFormData(false);
TextView title = findViewById(R.id.title);
title.setText(intentBundle.containsKey("title")
? intentBundle.getString("title")
: getResources().getString(R.string.navigazione));
webView.setWebViewClient(new WebViewClient());
WebSettings settings = webView.getSettings();
settings.setSaveFormData(true);
settings.setDomStorageEnabled(true);
if (intentBundle.containsKey("cookie") && intentBundle.containsKey("url"))
final String cookie = intentBundle.getString("cookie");
final String url = intentBundle.getString("url");
CookieManager.getInstance().setCookie(url, cookie);
CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true);
webView.loadUrl(url);
webView.setWebChromeClient(new WebChromeClient()
@Override
public void onProgressChanged(WebView view, int progress)
setProgress(progress * 100);
);
webView.setWebViewClient(new WebViewClient());
else if (intentBundle.containsKey("html"))
String htmlData = intentBundle.getString("html");
webView.loadData(htmlData, "text/html", "UTF-8");
else if (intentBundle.containsKey("url"))
String url = intentBundle.getString("url");
if (intentBundle.containsKey("postdata"))
String postData = intentBundle.getString("postdata");
byte[] postDataBytes = EncodingUtils.getBytes(postData, "BASE64");
webView.postUrl(url, postDataBytes);
else
webView.postUrl(url, null);
当用户在应用程序之间切换时,即从身份验证器复制 OTP(然后活动失去焦点),活动调用 onDestroy(),因此他必须重复登录过程。
我怎样才能保持 webview 活动活跃?
【问题讨论】:
【参考方案1】:最后我发现了问题。 我忘记在清单中输入 webview 活动
android:noHistory = "true"
这涉及在失去焦点的情况下销毁活动(不涉及 web 视图)。
【讨论】:
以上是关于Webview 活动在失去焦点时调用 onDestroy()的主要内容,如果未能解决你的问题,请参考以下文章
当 iOS 11 Webview 失去焦点时,HTML <select> 停止触发 onchange 或 onblur