近日公司需求跟得不紧,就自己找事优化,重构,找内存泄漏(如有错误,烦请拍砖)
内存泄漏工具之前的写的博客也有介绍 内存泄漏检测工具很好用,下面用LeakCanary找一个微信登录引起的内存泄漏(其实微信是有做释放操作,但是文档和demo中没有见到)
泄漏信息
图中可以看出自己应用的WeChatLoginActivity的实例没有回收掉导致的内存泄漏,再往上是WXApiImpV10中的一个内部类ActivityLifecycleCb中持有WeChatLoginActivity的实例导致的
不多说看微信SDK源码
查看createWXAPI的方法(因为WeChatLoginActivity的context是从这里传入的)
public static IWXAPI createWXAPI(Context var0, String var1, boolean var2) {
b.e("MicroMsg.PaySdk.WXFactory", "createWXAPI, appId = " + var1 + ", checkSignature = " + var2);
return new WXApiImplV10(var0, var1, var2);
}
比较简单直接进入WXApiImplV10,继续看WXApiImplV10