美文网首页
Android 软键盘造成的内存泄露

Android 软键盘造成的内存泄露

作者: 初见破晓 | 来源:发表于2017-05-05 16:52 被阅读468次

android 在使用软键盘之后, 可能会导致这个activity无法释放,造成泄露,提供一个解决办法

代码示例

 public static void fixInputMethodManagerLeak(Context context) {
        if (context == null) {
            return;
        }
        InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
        if (imm == null) {
            return;
        }
        String[] arr = new String[]{"mCurRootView", "mServedView", "mNextServedView"};
        Field f = null;
        Object obj = null;
        for (int i = 0; i < arr.length; i++) {
            String param = arr[i];
            try {
                f = imm.getClass().getDeclaredField(param);
                if (f.isAccessible() == false) {
                    f.setAccessible(true);
                }
                obj = f.get(imm);
                if (obj != null && obj instanceof View) {
                    View vGet = (View) obj;
                    if (vGet.getContext() == context) {
                        f.set(imm, null);
                    } else {
                        break;
                    }
                }
            } catch (NoSuchFieldException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
    }

相关文章

  • Android 软键盘造成的内存泄露

    android 在使用软键盘之后, 可能会导致这个activity无法释放,造成泄露,提供一个解决办法 代码示例

  • Android内存泄露解析

    内存泄露的原因是引用还存在,无法及时释放内存,android的内存泄露主要是activity销毁不及时。 造成内存...

  • Android 内存泄露及LeakCanary分析

    一.前言 在日常的Android开发中,不经意间就会造成内存泄露,如果持续泄露的话,那么最后会造成内存溢出,应用也...

  • Android 内存优化

    Android内存泄露容易导致内存溢出,又称为OOM。 内存泄漏怎么产生的 资源对象没关闭造成的内存泄漏 构造Ad...

  • Handler与内存泄露

    参考:Android使用Handler造成内存泄露的分析及解决方法 > https://www.cnblogs.c...

  • Android Context造成的内存泄露

    Context造成的内存泄漏,基本都是由于Context销毁的时候,却被引用导致销毁失败,而Application...

  • Handler造成内存泄露的分析和解决办法

    Android中使用Handler造成内存泄露的分析和解决办法 问题描述:This Handler class s...

  • Android面试 内存泄漏连环炮

    面试问题 什么是内存泄露,什么是内存溢出 什么情况下会造成堆溢出、栈溢出 常见造成内存泄露的情况 常见造成内存溢出...

  • 内存泄露总结

    内存泄露会产生的问题: 1:内存泄露造成的第一个问题是异常,包括内存分配失败,OOM。 2:内存泄露造成的第二个问...

  • 性能优化与保活

    ------内存泄漏优化------Android 内存优化你的 Handler 内存泄露 了吗?Android卡...

网友评论

      本文标题:Android 软键盘造成的内存泄露

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