android webview ZoomButtonsController 导致android.view.WindowLeaked 问题彻底解决


解决方案

@Override
    public void finish() {
        ViewGroup view = (ViewGroup) getWindow().getDecorView();
        view.removeAllViews();
        super.finish();
    }

附上webview加载html代码

package com.xuecheyi.activity;

import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

import com.xuecheyi.BaseActivity;
import com.xuecheyi.mb.R;
import com.xuecheyi.utils.Constant;
import com.xuecheyi.views.TitleManager;

import org.json.JSONObject;

/**
 * 创建者     涂文远
 * 创建时间   2016/10/26 14:43
 * 描述	      ${TODO}
 * <p/>
 * 更新者     $Author$
 * 更新时间   $Date$
 * 更新描述   ${TODO}
 */
public class LoadHtmlActivity extends BaseActivity {

    private WebView mWv;
    private String webUrl ="<span style="font-family: Arial, Helvetica, sans-serif;">http://mb.xuecheyi.com/app/xc_news.html?newsId=15617</span>";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_load_html);
        findViews();
        init();
        setListener();
    }

    @Override
    public void onRecvData(String type, JSONObject response) {

    }

    @Override
    public void findViews() {
        mWv = (WebView) findViewById(R.id.wv_content);
    }

    int newsId = 0;
    @Override
    public void init() {
        String title = getIntent().getStringExtra("title");
        int flag = getIntent().getIntExtra("flag",0);
        TitleManager.showTitle(this, title, R.drawable.nav_backarrow, "返回", null, 0,
                null, null);
        dialog.show();//加载中对话框显示
        mWv.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(webUrl);
                return true;
            }
        });

        mWv.setWebChromeClient(new MyWebChromeClient());
        WebSettings settings = mWv.getSettings();
        settings.setJavaScriptEnabled(true);
        settings.setLoadsImagesAutomatically(true); //支持自动加载图片
        settings.setJavaScriptCanOpenWindowsAutomatically(true);
        settings.setUseWideViewPort(true);//设置此属性,可任意比例缩放
        settings.setLoadWithOverviewMode(true);
        settings.setBuiltInZoomControls(true);
        settings.setSupportZoom(true);
        mWv.loadUrl(webUrl);
    }

    private class MyWebChromeClient extends WebChromeClient {
        @Override
        public void onProgressChanged(WebView view, int newProgress) {

            if (newProgress == 100) {//进度100代表webview加载完成
                dialog.dismiss();
            }
            super.onProgressChanged(view, newProgress);
        }
    }

    @Override
    public void setListener() {


    }

    @Override
    public void onClick(View v) {

    }

    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && mWv.canGoBack()) {
            mWv.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mWv.destroy();
        mWv = null;
    }

    @Override
    public void finish() {
        ViewGroup view = (ViewGroup) getWindow().getDecorView();
        view.removeAllViews();
        super.finish();
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值