从启动器启动应用程序时,WebView会重置

时间:2019-06-25 13:02:04

标签: android kotlin android-webview

我在WebView中加载网页。页面状态通过JavaScript更改。如果我将应用程序置于后台,然后使用任务切换器返回到该应用程序,则会保留网页的状态。如果我将其发送到后台,然后从启动器中将其打开,则会重置网页。 从启动器启动后,我该怎么做才能保持其状态?

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,现在修复了。我现在看到的一个问题是,即使调用了savedInstanceStateonCreate中的null始终是onSaveInstanceState

1 个答案:

答案 0 :(得分:1)

尝试将android:launchMode="singleTask"添加到您的 AndroidManifest.xml

<activity android:name=".activity.MainActivity"
            android:launchMode="singleTask"
            />