240 发简信
IP属地:西藏
  • Run/Debug Configurations 添加一个新的应用模版 将Default APK 改为APK from app bundle 就可以避免该问题

    Android Studio上,使用cmake编译出来的so只有arm64-v8a架构的问题原因

    问题提出 使用Android Studio进行NDK开发,用cmake编译jni文件,build.gradle文件中配置生成armeabi-v7a和arm64-v8a两种架构...

  • 关于mlastsrvview泄露的问题,只要在 String [] arr = new String[]{"mCurRootView", "mServedView", "mNextServedView"};中加入"mLastSrvView",去掉for循环中else中的break就能解决,也就是说这几个方法都要循环一遍. 亲测有效
    另外关于if (v_get.getContext() == destContext),原博客上已经做了解释了,去掉了会导致有输入框的界面无法弹出软键盘的问题.
    完整代码是这样的
    public static void fixInputMethodManagerLeak(Context destContext) {
    if (destContext == null) {
    return;
    }

    InputMethodManager imm = (InputMethodManager) destContext.getSystemService(Context.INPUT_METHOD_SERVICE);
    if (imm == null) {
    return;
    }

    String[] arr = new String[]{"mCurRootView", "mServedView", "mNextServedView", "mLastSrvView"};
    Field f = null;
    Object obj_get = 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);
    } // author: sodino mail:sodino@qq.com
    obj_get = f.get(imm);
    if (obj_get != null && obj_get instanceof View) {
    View v_get = (View) obj_get;
    if (v_get.getContext() == destContext) { // 被InputMethodManager持有引用的context是想要目标销毁的
    f.set(imm, null); // 置空,破坏掉path to gc节点
    }
    // FIXME: 2018/12/21 不要break,因为华为还有一个mLastSrvView

    }
    } catch (Throwable t) {
    t.printStackTrace();
    }
    }
    }

  • 120
    "巧"仿蚂蚁森林水滴动效

    前言:应鸿洋大神建议完善一下细节,之前确实写得比较简洁,适合有功底的人看,本文重在思路和性能,就不介绍自定义view和handler避免内存泄漏或是导致空指针这些了,喜欢请c...

  • 120
    噢~这就是Dagger2!

    前言 当前比较流行的Android开发框架当属MVP、RxJava、Retrofit2、Dagger2了,而在这些框架之中,学习成本最高也是最难上手的应该就是Dagger2了...

  • 8.0 开启service 不应该用startForegroundService?为什么还看到startservice

    自己用到的Android 双服务保活(适配8.0)

    最近开发的时候,测试小伙伴经常来找我,“为什么咱家程序放到后台,聊了会qq就得重启了呢?”我脑门一亮,“稍等,一会给你”。然后我就进入了程序流氓(进程保活)之旅。对于进程保活...

  • 前端攻城狮---html基础标签

    最近对前端特有兴趣 索性就学起了前端 通过视频和培训机构 不过自己感觉这个培训机构是真的好 哈哈 等我学成归来 再来大波广告。 开发工具 对于前端的开发工具 目前我选择su...

  • handler 还会造成内存泄露

    异步消息处理机制Handler

    异步消息处理线程启动后会进入一个无限的循环体之中,每循环一次,从其内部的消息队列中取出一个消息,然后回调相应的消息处理函数,执行完成一个消息后则继续循环。若消息队列为空,线程...

  • DataBinding基本使用(4)

    咱们什么都不说 先附上知识点 数据绑定的几种方式点击事件绑定的几种方式双向绑定数据RecycleView的数据绑定@InverseMethod 标签的使用在DataBindi...

  • DataBinding基本使用(3)

    咱们什么都不说 先附上知识点 数据绑定的几种方式 点击事件绑定的几种方式 双向绑定数据 RecycleView的数据绑定 @InverseMethod 标签的使用在DataB...

  • DataBinding基本使用(2)

    咱们直接点,直接上实战,把常用的标签的用会了,用熟了总的有以下几点 数据绑定的几种方式 点击事件绑定的几种方式 双向绑定数据 RecycleView的数据绑定 @Invers...

  • 120
    DataBinding基本使用(1)

    本文都是接合其他作者的总结,再加上自己实际操作中遇到的一些问题,来综合编写。 DataBinding的配置 因为网上一篓筐,就直接上代码 就这样三行代码,DataBindin...