美文网首页
Android软键盘

Android软键盘

作者: 桑享 | 来源:发表于2017-04-21 09:23 被阅读0次

    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软键盘

          本文链接:https://www.haomeiwen.com/subject/ararzttx.html