由于LocalActivityManager已經(jīng)過期官方停止維護友酱,包含該成員變量的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();