我有一個webview並加載了一些html5 + js。我的web應用程序非常密集。使用狀態函數,我可以找回正確的'頁面'我應該在方向更改後,但是我的web應用程序處於危險之中,因爲我所有的javascript變量也已被重置。Android在Webview方向中保留JS變量更改
是否有一種方法可以讓所有的javascript變量在webview方向更改上保存和恢復?什麼值輸入表單文本框?
==================
我在這方面取得了一些進展。在我的JS中,我有一個名爲requestState();
的鉤子。當這個函數被調用時,它通過JS Interface將我所有的JS變量發送到android/java端。
在Java方面,我堅持使用getLastNonConfigurationInstance
和onRetainNonConfigurationInstance
這個信息。我測試了輸出,它確實將所有的JS變量保存到Java中的對象中,直到活動狀態在方向變更時發生變化。
問題是回到我應該在的地方。我在JS中有一個函數,其功能與requestState();
相反,名爲setState(input);
。該功能是通過使用mywebview.loadUrl("javascript:setState(" + jsonStr + ")");
從Android端調用的。我在我的onCreate結束後做了這個,解壓後的webview並調用wv.restoreState(savedInstanceState);
。
雖然我注意到setState
還沒有被定義在我叫它的時候!事實上,我的JS腳本沒有準備好被調用,甚至不存在/在我的活動的onCreate函數結束時被發現。爲了測試我的理智,我嘗試了mywebview.loadUrl("javascript:alert(" + jsonStr + ")");
,我確實看到了我期望看到的內容 - 包含我所有變量值的警報。但是我注意到,在警報出現之前,頁面本身並未呈現。我應該如何解決這個問題?