再次恢复应用程序时如何不重新加载webview?

Posted

技术标签:

【中文标题】再次恢复应用程序时如何不重新加载webview?【英文标题】:How to not reload webview when resuming app again? 【发布时间】:2018-01-06 06:26:54 【问题描述】:

我制作了一个 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");

    


【问题讨论】:

【参考方案1】:

所以基本上你要做的就是将你的活动状态保存在 saveInstanceState 上,

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

并且在您的 oncreate 中,您只需检查 savedstate 是否为 null,如果为 null,则 loadurl 否则为 restorestate。

@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");
 

这是您在恢复应用时恢复状态的方式。

【讨论】:

我完全按照你的解释做了,但是没有用,也没有错误。这是我的java文件hastebin.com/oqisurusez.scala 方向改变时会发生这种情况吗? 不。如果回击并再次打开,它只会重新加载网页。 不,我不是在谈论历史。当用户点击后退按钮时。它关闭(没有真正关闭,应用程序仍在后台打开),当再次打开时,webview 刷新。 Webview 仍在重新加载简历【参考方案2】:

我找到了解决方案:

只需覆盖 OnPostResume 方法 并且 将此添加到您的主代码中

yourWevView.onResume();

它对我有用。

【讨论】:

我像这样覆盖 onPostResume @Override protected void onPostResume() super.onPostResume(); 在 mainactivity java 文件中,但不起作用。我应该把 yourwebview.onresume 放在哪里?

以上是关于再次恢复应用程序时如何不重新加载webview?的主要内容,如果未能解决你的问题,请参考以下文章

目标C - 再次点击标签栏项目时,如何重新加载网页视图?

Android WebView - 在不重新加载的情况下设置 HTML

Android - 恢复 Fragment WebView 状态以避免重新加载

Android WebView 防止页面重新加载

Objective C - WebView无法从顶部重新加载

在不重新加载 web 视图的情况下更改 html 文本颜色