如何在再次打开应用程序时不重新加载Webview?

5

我制作了一个Webview应用程序。一切运行良好。但是,当用户点击返回按钮并打开(恢复)应用程序时,它会重新加载webview。我该如何防止这种情况发生?

MainActivity.java

public class MainActivity extends Activity {
    private WebView mWebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

            mWebView = (WebView) findViewById(R.id.webView);
            mWebView.loadUrl("http://www.example.org");

    }

}
2个回答

6

基本上你要做的是,在saveInstanceState中保存你的活动状态。

   @Override
protected void onSaveInstanceState(Bundle bundle) {
    mWebView.saveState(bundle);
}

在你的onCreate方法中,只需检查savedstate是否为null。如果为null,则加载URL,否则还原状态。
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

            mWebView = (WebView) findViewById(R.id.webView);
            if (savedInstanceState != null)
      mWebView.restoreState(savedInstanceState);
   else
      mWebView.loadUrl("http://www.example.org");
 }

每当您恢复应用程序时,以下是如何取回您的状态。


2
我按照您所解释的步骤进行了操作,但是没有效果也没有错误。这是我的Java文件 https://www.hastebin.com/oqisurusez.scala - user3304007
屏幕方向改变时会发生这种情况吗? - Deep Naik
3
不是的,如果点击返回按钮再重新打开页面,它只会重新加载网页。 - user3304007
1
不,我并不是在谈论历史。当用户按下返回按钮时,它会关闭(实际上并没有完全关闭,应用程序仍处于后台打开状态),再次打开时webview会刷新。 - user3304007
5
恢复应用程序时,Webview 仍在重新加载。 - ericjam
显示剩余2条评论

0
我找到了解决方案:
只需覆盖OnPostResume方法
并且
将此代码添加到您的主要代码中。
yourWevView.onResume();

这对我有用。


我在MainActivity的Java文件中像这样重写了onPostResume方法:@Override protected void onPostResume() { super.onPostResume();} 但是它没有起作用。你应该把yourwebview.onresume放在哪里? - stefanosn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接