android 关于使用webView的一些问题记录

1.在页面finish的时候注意:
@Override
protected void onDestroy() {//网页资源释放处理。解决页面退出finish()了,音频还在的问题
if (mViewHolder.mWebView != null) {
((ViewGroup) mViewHolder.mWebView.getParent()).removeView(mViewHolder.mWebView);
mViewHolder. mWebView.destroy();
mViewHolder.mWebView = null;
}
super.onDestroy();
}
2.web的一些设置
private void setupWebView() {
WebSettings setting = mWebView.getSettings();
setting.setCacheMode(WebSettings.LOAD_DEFAULT);
setting.setDefaultTextEncodingName(“UTF-8”);
setting.setJavaScriptEnabled(true);
setting.setJavaScriptCanOpenWindowsAutomatically(true);
// setting.setPluginsEnabled(true);
setting.setDatabaseEnabled(true);
setting.setDomStorageEnabled(true);
// 去掉缩放按钮
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
// Use the API 11+ calls to disable the controls
setting.setBuiltInZoomControls(true);
setting.setDisplayZoomControls(false);
} else {
// Use the reflection magic to make it work on earlier APIs
getControlls();
}

       //网页进入二级网页时就不会出现短暂黑屏的现象,但是不知道为什么
       mWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
     //设定支持viewport后网页的内容才能自适应屏幕   
        setting.setUseWideViewPort(true);
        mWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);

//web与js交互的一些方法,js调用传值给android
mWebView.addJavascriptInterface(new AppJSParamPassInterface(), “AppJsParamsObj”);
mWebView.addJavascriptInterface(new WebAppInterface(), “shareInfos”);
mWebView.setWebViewClient(webClient);
mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public void onReceivedTitle(WebView view, String title) {
swipeRefreshLay.setRefreshing(false);
setBackActivityTitle(view.getTitle());
super.onReceivedTitle(view, title);
}
});
}
3. web js 与android客户端交互,h5调用客户端方法,获取需要的参数
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.loadUrl(“javascript:getShareInfos()”);
view.loadUrl(“javascript:getBasePageInfos()”);
}
4.H5调用的方法,传入参数给客户端,控制客户端的一些操作。与2中设置的对应 该类的方法前一定加@JavascriptInterface,否则4.0以后的手机无法接受数据,需要ui更改操作的,则需要另起线程,不能再主线程中更新UI
protected class WebAppInterface {

    @JavascriptInterface
    public void openNewWeb(String url) {
        WebViewActivity.openNewWeb(WebViewActivity.this,
                AtomInfoBuilder.addAtomParams4Web(url));

    }


    @JavascriptInterface
    public void clickPic(String json) {

// NewsPicWithShareInfo newsPicWithShareInfo = new Gson().fromJson(json, NewsPicWithShareInfo.class);
// Intent i = new Intent(WebViewActivity.this, NewsPicActivity.class);
// i.putExtra(NewsPicActivity.NEWSPICWITHSHAREINFO,newsPicWithShareInfo);
// startActivity(i);

    }

    private String shareTitle;

    @JavascriptInterface
    public void getShareTitle(String title) {
        shareTitle = title;
    }

    @JavascriptInterface
    public void b(String title) {
        shareTitle = title;
    }

/**
* 获取APP所需的网页一些配置信息。需要ui更改操作的,则需要另起线程,不能再主线程中更新UI
*
* @param json
*/
@JavascriptInterface
public void getBasePageInfos(final String json) {
AppHandler.post(new Runnable() {
@Override
public void run() {
mWebPageInfos = new Gson().fromJson(json, WebPageInfos.class);
initTitleBarBtns();
}
});
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值