8

バックアップを使用して Webview の状態を復元すると、次のメッセージが表示されます。x アドレスの Web ページは一時的にダウンしているか、新しい Web アドレスに完全に移動した可能性があります。

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

@Override
public void onRestoreInstanceState(Bundle outState) {
  super.onRestoreInstanceState(outState);
    webViewShowPoll.restoreState(outState);
}

および Androidmanifest.xml

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SET_DEBUG_APP"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />    


    <activity
        android:name="com.omid.epoll.mobile.Poll"
        android:launchMode="singleInstance"
        android:label="@string/title_activity_poll" 
        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
    </activity>
4

4 に答える 4

2

restoreStateは信頼できるものではありませんでした。それがおそらく、ドキュメントが現在これを言っている理由です。

この WebView が状態を構築する機会 (ページの読み込み、戻る/進むリストの作成など) を行った後に呼び出されると、望ましくない副作用が生じる可能性があります。このメソッドは、この WebView の表示データを復元しないことに注意してください。

そして、saveState() の対応するエントリは次のように語っています。

このメソッドは、この WebView の表示データを保存しないことに注意してください。

onCreate メソッド内で本当にすべきことは、最後にアクセスした URL を表示する場合は webView.loadUrl() を呼び出すことです。この回答を参照してください。

向きの変更などで webview がリロードすることが懸念される場合。

向きとキーボード非表示の変更を処理するようにアクティビティを設定し、WebView をそのままにしておくことができます

于 2015-09-30T12:28:49.843 に答える
2
 if (isInternetPresent) {
        // Internet Connection is Present
        // make HTTP requests
        // showAlertDialog(HomeScreen.this, "Internet Connection",
        // "You have internet connection", true);

        webviewbrowse.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
        webviewAds.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
        webviewbrowse.loadUrl("http://www.example.com");
    } else {
        // Internet connection is not present
        // Ask user to connect to Internet
        webviewbrowse.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
        webviewAds.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
        webviewbrowse.loadUrl("http://example.com");
        showAlertDialog(HomeScreen.this, "internet doesn't connect",
                " please connect to internet", false);
    }
于 2013-08-28T06:19:46.233 に答える
-2

WebView がフラグメント内にある場合は、以下を確認してください。

保存:

@Override
public void onSaveInstanceState(Bundle outState) {
    webView.saveState(outState); // output would be a WebBackForwardList
}

ドキュメントで saveState を確認できます。

復元:

@Override
public void onCreate(Bundle savedInstanceState) {
    ...

    if (savedInstanceState != null) {
        webView.restoreState(savedInstanceState);
    } else {
        webView.loadUrl("http://mypage");
    }
}
于 2016-08-22T09:59:30.613 に答える