LocalActivityManager Memory Leak风险

由于LocalActivityManager已经过期官方停止维护,包含该成员变量的Activity存在泄漏风险,项目中如果使用到该类需在onDestroy时通过反射进行一次hack处理

System.gc();
Field activityManager = aClass.getDeclaredField("mLocalActivityManager");
activityManager.setAccessible(true);
LocalActivityManager manager = ((LocalActivityManager) activityManager.get(activity));
Field mResumed = manager.getClass().getDeclaredField("mResumed");
mResumed.setAccessible(true);
Object record = mResumed.get(manager);
Field window = record.getClass().getDeclaredField("window");
window.setAccessible(true);
Field activity1 = record.getClass().getDeclaredField("activity");
activity1.setAccessible(true);
window.set(record, null);
activity1.set(record, null);
activityManager.set(activity, null);
mResumed.set(manager, null);
Runtime.getRuntime().gc();
System.gc();
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 类加载机制 如下图所示,JVM类加载机制分为五个部分:加载,验证,准备,解析,初始化,下面我们就分别来看一下这五个...
    举头望明月泣阅读 1,170评论 0 0
  • 1.什么是Activity?问的不太多,说点有深度的 四大组件之一,一般的,一个用户交互界面对应一个activit...
    JoonyLee阅读 5,754评论 2 51
  • 为了面试,为了高工资,废话不多说,不定期更新。 1. Activity正常和异常情况下的生命周期分析。 Activ...
    24K男阅读 845评论 0 0
  • 转自 1. 什么是Activity? 四大组件之一,一般的,一个用户交互界面对应一个activity setCon...
    joe1632阅读 1,413评论 0 7
  • 所有知识点已整理成app app下载地址 J2EE 部分: 1.Switch能否用string做参数? 在 Jav...
    侯蛋蛋_阅读 2,482评论 1 4