7

多くのスレッドを検索しましたが、まだ質問に対する答えが見つかりません。Androidを使用するアプリに取り組んでいますWebView

私はonSaveInstanceState()andを使用して、次のように状態onRestoreInstanceState()を保存します。WebView

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    webView.saveState(savedInstanceState);
}

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
    webView.restoreState(savedInstanceState);
}

私もこれを持っていますonCreate()

public void onCreate(Bundle savedInstanceState) {
    ... other code ...
    if(savedInstanceState != null){
        webView.saveState(savedInstanceState);
    }else{
        webView.loadUrl("http://mypage");
    }
}

問題:復元しても、変数/環境/ワークスペースWebViewがまったく復元されないようです。Javascriptアプリがバックグラウンドで強制終了されてから復元されると、Javascript 全体がすべてのオブジェクト/変数とともに失われます。javascript コードはwindow.utilitiesPackwindow.eventHandlerswindow.automation、 などの名前空間であり、未定義です。またJQuery、他の JavaScript プラグインも使用されています。それらはすべて、状態の復元後に未定義のようです。基本的にJavascript全体は復元されません。

これが実際の状態であることを誰かが確認または反証できますか (Javascript は保存されません)? JavaScriptワークスペース全体が保存されない場合、正確には何がWebView.saveState()保存されますか? Javascript オブジェクトを保持するために既存の API を使用する簡単でエレガントな方法はありますか?

//================================================ ======

Update1:したがって、問題は残ります。最も重大な問題は次のとおりです。

結果のためにカメラを起動していIntentます。写真が撮影されると、アプリはアクティビティに戻り、WebViewJavascript を使用して HTML5LocalStorageをいくつかのデータ変数で更新することになっています。

Camera Activity が表示されている間、メインの ActivityWebViewは強制終了されるため、WebView に戻ると、Javascript がなくなり、Android コードから呼び出すことができる関数がなくなります。これは で毎回発生しGalaxy S3ます。他の電話ではまだ発生しますが、写真を撮るたびに発生するわけではありません.

ここで何をすべきかわからない。どういうわけか、カメラの意図で写真を撮っている間、状態を保持するために WebView でメインのアクティビティを作成する必要があります。これを達成する方法を知っている人はいますか?

4

2 に答える 2

3

見つかった情報はほとんどありません。次の行のみです。

このメソッドは、この WebView の表示データを保存しないことに注意してください。以前の動作では、restoreState(Bundle) が呼び出されなかった場合、ファイルがリークする可能性がありました。

そしてこの行:

状態を保存するために使用される戻る/進むリストの同じコピーを返します。

のjavadocでWebView.saveState(Bundle)

于 2013-07-09T08:44:59.717 に答える