1. 程式人生 > >Android InputMethodManager 記憶體洩漏解決方案

Android InputMethodManager 記憶體洩漏解決方案

之前使用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(); }