zoukankan      html  css  js  c++  java
  • Webview内存泄漏解决办法

    最近在activity嵌套webview显示大量图文发现APP内存一直在涨,没法释放内存,查了很多资料,大概是webview的一个BUG,引用了activity导致内存泄漏,所以就尝试传递getApplicationContext

    1.避免在xml直接写webview控件,这样会引用activity,所以在xml写一个LinearLayout,然后 linearLayout.addView(new MyWebview(getApplicationContext()));

    这样动态生成webview就能避免内存泄漏,可是这样会导致部分机型的webview里面点击超链接会出现异常,程序崩溃,暂时的解决办法是禁止点击,需要重写webview,

    public class MyWebview extends WebView {
        public MyWebview(Context context) {
            super(context);
        }
    
        public MyWebview(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
    
        public MyWebview(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
        }
    
        @Override
        public boolean onTouchEvent(MotionEvent event) {
            return false;
        }
    }

    这样能避免出现程序崩溃。

    2.activity关闭时需要手动释放webview内存

     @Override
        protected void onDestroy() {
            super.onDestroy();
            if(webview_projectinfo != null){
                webview_projectinfo.removeAllViews();
                webview_projectinfo.destroy();
                webview_projectinfo = null;
                ll_webview.removeAllViews();
                ll_webview = null;
            }
        }

    上面的方法 已经可以把内存释放出来,但是有缺陷,就是没法点击webview的内容,还有一种方法是给嵌套webview的activity另开一个进程,作为一个独立进程展示。

    
    
  • 相关阅读:
    VC 常见问题百问
    python windows 环境变量
    Check server headers and verify HTTP Status Codes
    Where are the AES 256bit cipher suites? Please someone help
    outlook 如何预订会议和会议室
    安装Axis2的eclipse插件后,未出现界面
    windows 环境变量
    python 时间日期处理汇集
    openldap学习笔记(使用openldap2.3.32)
    set p4 environment in windows
  • 原文地址:https://www.cnblogs.com/lostbird/p/5653601.html
Copyright © 2011-2022 走看看