Android软键盘

Samsung手机ClipboardUIManager引起的内存泄漏

项目中软件盘弹出不正常,弹出的方式也改变了,程序日志如下

E/ClipboardServiceEx﹕ clipEx is android.sec.clipboard.ClipboardExManager@1f70b420
E/ClipboardServiceEx﹕ clipEx has text data : false

这是三星系统的一个BUG,由于ClipboardUIManager是这样获取对象的

public static ClipboardUIManager getInstance(Context context) {  
  if (sInstance == null)  
    sInstance = new ClipboardUIManager(context);  
  return sInstance;  
}  

获取ClipboardUIManager对象传的Context实际上就是当前的Activity,导致该activity一直被引用没法释放了
解决办法在Application中先通过反射调用getInstance方法传入当前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();  
        }  

你可能感兴趣的:(Android软键盘)