0

我在我的应用程序中使用 WebView 来加载远程 url。它能够成功加载远程 url。但是每当我尝试在后台和前台之间切换我的应用程序时,有时我的当前包含 WebView 的活动正在刷新。我如何避免当我从后台切换到前台时刷新我的 WebView。我根本没有在我的 Activity 中使用 onResume()。May 应用程序版本是 2.2。我在 AndroidManifest.xml 文件中的 Activity 标记如下。

    <activity 
        android:name=".Main"
        android:screenOrientation="portrait" android:configchanges="orientation|keyboardHidden|locale|uiMode|mcc|mnc|touchscreen|keyboard">
    </activity>

谢谢&问候,文卡特。

4

3 回答 3

2

尝试覆盖 WebViewClient,例如:

        webView.setWebViewClient(new WebViewClient(){
    private boolean alreadyLoaded = false;  
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
                if (alreadyLoaded)
                   return;
                alreadyLoaded = true;
                super.onPageStarted(view,url,favicon);
        }

        @Override
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
            super.onReceivedError(view, errorCode, description, failingUrl);

        }


        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
        }

    });
于 2012-05-31T18:12:05.583 回答
0

将 android:launchMode="singleTask" 添加到 AndroidManifest.xml 中的主要活动

于 2017-03-22T14:45:51.867 回答
0

您必须保存 webview 的状态并在onCreatewhen中恢复它savedInstanceState != null。webview 有一个功能saveState(..),您可以使用它来保存onSaveInstanceState(..)Activity 中的状态。

在您的活动中:

@Override
protected void onCreate(Bundle savedInstanceState) {
    if(savedInstanceState != null){
        mWebView.restoreState(savedInstanceState);
    }
}

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    mWebView.saveState(outState);
}
于 2017-06-29T09:33:49.500 回答