WXApiImplV10.activityCb内存泄漏处理

集成了LeakCanary对APP进行内存泄漏监控后,发现有一个WXApiImplV10.activityCb这样的日志,是在登录页面发生的。


WXApiImplV10.activityCb内存泄漏处理_第1张图片
image.png

产生的原因

在发生此种问题的地方,你一定可以找到这样的代码,而且你对IWXAPI并不陌生。是的,这是微信的sdk。

IWXAPI wxapi = WXAPIFactory.createWXAPI(this, Constants.APP_ID,
                    false);

目前流行的应用都少不了三方登录,分享,当然都集成了微信的sdk,IWXAPI初始化的时候将context传进去了,看到这里别以为是微信的锅,是我们自己没调用销毁的方法。

解决方法

1.其实很简单,只需要在onDestroy()中调用wxapi.detach();

 @Override
    protected void onDestroy() {
        if(wxapi != null){
            //微信api释放
            wxapi.detach();
        }
        super.onDestroy();
    }

2.当然还有第二个方案,context传入Application微信也是支持的(还有的wxapi直接在Application中声明创建,整个app都用一个wxapi)

WXAPIFactory.createWXAPI(this.getApplicationContext(), Constants.APP_ID,
                    false);

你可能感兴趣的:(WXApiImplV10.activityCb内存泄漏处理)