मैं वेबव्यू में एक वेब पेज लोड करता हूं। पृष्ठ की स्थिति जावास्क्रिप्ट के माध्यम से बदलती है। यदि मैं ऐप को पृष्ठभूमि में रखता हूं, और फिर कार्य स्विचर का उपयोग करके उस पर वापस आ जाता हूं, तो वेब पेज की स्थिति संरक्षित रहती है। अगर मैं इसे पृष्ठभूमि में भेजता हूं और फिर इसे लॉन्चर से खोलता हूं, तो वेब पेज रीसेट हो जाता है। लॉन्चर से लॉन्च होने पर मैं इसकी स्थिति को सुरक्षित रखने के लिए क्या कर सकता हूं?

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 को ओवरराइड किया, मैंने इसे अभी ठीक कर दिया है। एक समस्या अब मैं देख सकता हूं कि savedInstanceState में onCreate हमेशा null होता है, onSaveInstanceState के लागू होने के बाद भी।

0
markonius 25 जून 2019, 16:02

1 उत्तर

सबसे बढ़िया उत्तर

android:launchMode="singleTask" को अपने AndroidManifest.xml . में जोड़ने का प्रयास करें

<activity android:name=".activity.MainActivity"
            android:launchMode="singleTask"
            />
2
Usama K. Zafar 25 जून 2019, 13:23