Samsung手機(jī)ClipboardUIManager引起的內(nèi)存泄漏
項(xiàng)目中軟件盤彈出不正常,彈出的方式也改變了,程序日志如下
E/ClipboardServiceEx﹕ clipEx is android.sec.clipboard.ClipboardExManager@1f70b420
E/ClipboardServiceEx﹕ clipEx has text data : false
這是三星系統(tǒng)的一個BUG,由于ClipboardUIManager是這樣獲取對象的
public static ClipboardUIManager getInstance(Context context) {
if (sInstance == null)
sInstance = new ClipboardUIManager(context);
return sInstance;
}
獲取ClipboardUIManager對象傳的Context實(shí)際上就是當(dāng)前的Activity,導(dǎo)致該activity一直被引用沒法釋放了
解決辦法在Application中先通過反射調(diào)用getInstance方法傳入當(dāng)前Application,具體代碼如下
try {
Class cls = Class.forName("android.sec.clipboard.ClipboardUIManager");
Method m = cls.getDeclaredMethod("getInstance", Context.class);
m.setAccessible(true);
m.invoke(null, this);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}