集成了LeakCanary對APP進行內存泄漏監控後,發現有一個WXApiImplV10.activityCb這樣的日誌,是在登錄頁面發生的。
產生的原因
在發生此種問題的地方,你一定可以找到這樣的代碼,而且你對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);