Webview activity在失去焦点时调用onDestroy()



我有一个简单的活动与webview:

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活动活着?

最后我找到了问题所在。我忘了在清单中输入webview活动

android:noHistory = "true"

涉及在失焦情况下破坏活动(不涉及webview)。

最新更新