私は多くのスレッドを検索しましたが、私の質問に対する答えはまだ見つかりません。私はWebView
を使用してAndroid
アプリで取り組んでいます。私onCreate()
にWebView saveState()はJavascriptの変数/環境を保持しますか?
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
webView.saveState(savedInstanceState);
}
と
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
webView.restoreState(savedInstanceState);
}
私もこれを持っている:
は、私はこのようなWebView
状態を保存するためにonSaveInstanceState()
とonRestoreInstanceState()
を使用
public void onCreate(Bundle savedInstanceState) {
... other code ...
if(savedInstanceState != null){
webView.saveState(savedInstanceState);
}else{
webView.loadUrl("http://mypage");
}
}
問題:WebView
を復元しても、Javascript
の変数/環境/作業領域がまったく復元されないようです。アプリがバックグラウンドで強制終了され、復元されると、Javascript全体がすべてのオブジェクト/変数とともに削除されます。 JavaScriptコードは、名前に離間、即ちwindow.utilitiesPack
、window.eventHandlers
、window.automation
などであり、それらは未定義です。また、JQuery
などのjavascriptプラグインが使用されています。復元状態の後は、すべてが未定義のようです。基本的にJavascript全体は復元されません。
は、誰かが確認するか、これはそれが本当に(Javascriptが保存されない)であるかであることを反証することはできますか? Javascriptワークスペース全体が保存されない場合、正確にWebView.saveState()
は保存されますか?既存のAPIを使用してJavascriptオブジェクトを保持する簡単でエレガントな方法はありますか?
// ============================================ ==========
更新1:したがって、問題は残ります。最も重要な難しさはこれです:
私は結果のためにカメラIntent
を立ち上げています。写真を撮影した場合、アプリがWebView
活動に戻って取得し、いくつかのデータ変数とHTML5 LocalStorage
を更新するためにJavascriptを使用することになっています。
カメラアクティビティが表示されている間にメインアクティビティが終了するので、WebViewに戻ったときにはJavascriptがなくなり、Androidコードから呼び出せる機能はありません。これは、毎回Galaxy S3
で発生します。それはまだ他の携帯電話では起こりますが、写真を撮るたびにではありません。
はここで何をするか分かりません。 Camera Intentで写真を撮影している間、何らかの形でWebViewでメインのアクティビティを作成して状態を保持する必要があります。どのようにこれを達成することができるか考えている人はいますか?
「誰かがこれが本当にどのようになっているかを確認することができますか?それを証明することはできますか? – millimoose
(ドキュメントには、保存されているものが 'WebBackForwardList'であることを暗示しているようです。) – millimoose
"試してみて、実際に何が起こったのかを確認していませんか? "私はJavascript全体が保存されていないとは信じられません。私は何かを理解していないことを望んでいる、それはその場合、これは複雑なjavascript機能を持つWebページを使用するアプリケーションのためのそのような制限です。 – user2113581