从启动器启动应用程序时 WebView 会重置
WebView resets when app is launched from launcher
我在 WebView 中加载网页。页面状态通过 JavaScript 改变。如果我将应用程序置于后台,然后使用任务切换器对其进行 return,则网页的状态将得到保留。如果我将它发送到后台,然后从启动器打开它,网页将被重置。
从启动器启动时,我该怎么做才能保持其状态?
class MainActivity : Activity() {
private var webView: WebView? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
requestWindowFeature(Window.FEATURE_NO_TITLE)
setContentView(R.layout.activity_main)
webView = findViewById(R.id.webView)
webView?.webViewClient = OzvenaWebViewClient(this)
CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true)
webView?.settings?.javaScriptEnabled = true
if (savedInstanceState != null)
webView?.restoreState(savedInstanceState)
else
webView?.loadUrl("https://markonius.gitlab.io/ozvena/ozvena.html")
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
webView?.saveState(outState)
}
override fun onRestoreInstanceState(savedInstanceState: Bundle) {
super.onRestoreInstanceState(savedInstanceState)
webView?.restoreState(savedInstanceState)
}
override fun onBackPressed() {
moveTaskToBack(true)
}
}
编辑:我覆盖了错误的 onSaveInstanceState
,我现在修正了它。我现在看到的一个问题是 onCreate
中的 savedInstanceState
始终是 null
,即使在调用 onSaveInstanceState
之后也是如此。
尝试将 android:launchMode="singleTask"
添加到您的 AndroidManifest.xml
<activity android:name=".activity.MainActivity"
android:launchMode="singleTask"
/>
我在 WebView 中加载网页。页面状态通过 JavaScript 改变。如果我将应用程序置于后台,然后使用任务切换器对其进行 return,则网页的状态将得到保留。如果我将它发送到后台,然后从启动器打开它,网页将被重置。 从启动器启动时,我该怎么做才能保持其状态?
class MainActivity : Activity() {
private var webView: WebView? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
requestWindowFeature(Window.FEATURE_NO_TITLE)
setContentView(R.layout.activity_main)
webView = findViewById(R.id.webView)
webView?.webViewClient = OzvenaWebViewClient(this)
CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true)
webView?.settings?.javaScriptEnabled = true
if (savedInstanceState != null)
webView?.restoreState(savedInstanceState)
else
webView?.loadUrl("https://markonius.gitlab.io/ozvena/ozvena.html")
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
webView?.saveState(outState)
}
override fun onRestoreInstanceState(savedInstanceState: Bundle) {
super.onRestoreInstanceState(savedInstanceState)
webView?.restoreState(savedInstanceState)
}
override fun onBackPressed() {
moveTaskToBack(true)
}
}
编辑:我覆盖了错误的 onSaveInstanceState
,我现在修正了它。我现在看到的一个问题是 onCreate
中的 savedInstanceState
始终是 null
,即使在调用 onSaveInstanceState
之后也是如此。
尝试将 android:launchMode="singleTask"
添加到您的 AndroidManifest.xml
<activity android:name=".activity.MainActivity"
android:launchMode="singleTask"
/>