欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android软键盘

程序员文章站 2022-04-19 23:49:23
...

Samsung手机ClipboardUIManager引起的内存泄漏

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

E/ClipboardServiceEx﹕ clipEx is [email protected]
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();  
        }