Android InputMethodManager 記憶體洩漏解決方案
阿新 • • 發佈:2019-02-13
之前使用LeakCanary工具定位記憶體問題時候,發現系統輸入法的記憶體洩漏,網上也有挺多解決方案,如下這篇算是比較好的幾種方案的集合。
https://zhuanlan.zhihu.com/p/20828861?refer=zmywly8866
在專案中,通過閱讀原始碼,最終採用了一種文章沒提到的方案,暫時未發現有什麼問題,紀錄下,方便後續查閱。
在 activity 的 onDestroy 方法中加入如下程式碼即可。
//Fix memory leak: http://code.google.com/p/android/issues/detail?id=34731
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT _METHOD_SERVICE);
try {
InputMethodManager.class.getDeclaredMethod("windowDismissed", IBinder.class).invoke(imm,
getWindow().getDecorView().getWindowToken());
} catch (Exception e){
e.printStackTrace();
}