Android用WebView遇到的各种问题

来源:互联网 发布:程序员培训全日制吗 编辑:程序博客网 时间:2024/04/30 06:14

在项目里某些页面是WebView加载的H5页面,H5页面与原生结合往往出现很多问题,下面把最近遇到的问题记录一下。


一、标题是原生,H5页面又内嵌了几层。WebView调用goBack()有的机型手机不走onReceivedTitle()方法。

      客户端原生做的标题title需要跟h5页面的标题一致。原来在WebChromeClient重写onReceivedTitle()方法里设置更新标题,其第二 个参数就是H5页面的title 。后来在不同机型测试时发现内嵌多层调用goBack()时有一些手机不走onReceivedTitle()方法。

      解决方法:在WebView设置WebViewClient, 重写onPageFinished()方法. 调用oBack()方法时也会走onPageFinished()方法.因此,只要重写onPageFinished()方法,在里面设置title就好了。

@Override        public void onPageFinished(WebView view, String url) {            mTitle.setText(view.getTitle());            loadingDialog.dismiss();            }        }

二、WebView容易内存泄漏

      加载的页面比较大的时,WebView内存泄露会很严重

       动态创建WebView;用getApplicationContext()代替Context;在onDestroy()方法里销毁WebView。为加载WeView的界面开一个新进程,在退出页面后关闭这个进程。

WebView mWebView = new WebView(getApplicationContext()); LinearLayout  layout  = findViewById(R.id.llLayout); layout.addView(mWebView);
   @Override    public void onDestroy() {        if (mWebView != null) {            mWebView.removeAllViews();            mWebView.destroy();            mWebView = null;        }    }



1 0
原创粉丝点击