From 946b0ff1d7368f4780ffeea239cd040d74403a59 Mon Sep 17 00:00:00 2001 From: chenhailiang <> Date: Fri, 12 Nov 2021 09:46:43 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:ActivityLeakFixer=E4=B8=ADdrawable?= =?UTF-8?q?=E5=BA=94=E8=AF=A5=E5=B0=BD=E5=BF=AB=E6=B8=85=E9=99=A4native?= =?UTF-8?q?=E5=B1=82=E5=BC=95=E7=94=A8=E7=9A=84bitmap=E5=AF=B9=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../matrix/resource/ActivityLeakFixer.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/matrix/matrix-android/matrix-resource-canary/matrix-resource-canary-android/src/main/java/com/tencent/matrix/resource/ActivityLeakFixer.java b/matrix/matrix-android/matrix-resource-canary/matrix-resource-canary-android/src/main/java/com/tencent/matrix/resource/ActivityLeakFixer.java index 9d82510ec..ad6325081 100644 --- a/matrix/matrix-android/matrix-resource-canary/matrix-resource-canary-android/src/main/java/com/tencent/matrix/resource/ActivityLeakFixer.java +++ b/matrix/matrix-android/matrix-resource-canary/matrix-resource-canary-android/src/main/java/com/tencent/matrix/resource/ActivityLeakFixer.java @@ -287,6 +287,7 @@ private static void recycleImageView(ImageView iv) { } iv.setImageDrawable(null); + recycleBitmap(d); } private static void recycleTextView(TextView tv) { @@ -294,6 +295,7 @@ private static void recycleTextView(TextView tv) { for (Drawable d : ds) { if (d != null) { d.setCallback(null); + recycleBitmap(d); } } tv.setCompoundDrawables(null, null, null, null); @@ -330,11 +332,13 @@ private static void recycleProgressBar(ProgressBar pb) { if (pd != null) { pb.setProgressDrawable(null); pd.setCallback(null); + recycleBitmap(pd); } final Drawable id = pb.getIndeterminateDrawable(); if (id != null) { pb.setIndeterminateDrawable(null); id.setCallback(null); + recycleBitmap(id); } } @@ -384,6 +388,7 @@ private static void recycleFrameLayout(FrameLayout fl) { if (fg != null) { fg.setCallback(null); fl.setForeground(null); + recycleBitmap(fg); } } } @@ -411,6 +416,7 @@ private static void recycleLinearLayout(LinearLayout ll) { if (dd != null) { dd.setCallback(null); ll.setDividerDrawable(null); + recycleBitmap(dd); } } } @@ -421,4 +427,14 @@ private static void recycleViewGroup(ViewGroup vg) { unbindDrawablesAndRecycle(vg.getChildAt(i)); } } + + private static void recycleBitmap(Drawable drawable){ + if(drawable instanceof BitmapDrawable){ + Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap(); + if(!bitmap.isRecycled()){ + bitmap.recycle(); + } + } + + } } From 9ea3ede26792901351b4ed668b714f452ba7d682 Mon Sep 17 00:00:00 2001 From: chenhailiang <> Date: Fri, 12 Nov 2021 11:23:09 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8DswipeRefreshLayout?= =?UTF-8?q?=E7=A9=BA=E6=8C=87=E9=92=88=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/tencent/matrix/resource/ActivityLeakFixer.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/matrix/matrix-android/matrix-resource-canary/matrix-resource-canary-android/src/main/java/com/tencent/matrix/resource/ActivityLeakFixer.java b/matrix/matrix-android/matrix-resource-canary/matrix-resource-canary-android/src/main/java/com/tencent/matrix/resource/ActivityLeakFixer.java index ad6325081..e74da92bc 100644 --- a/matrix/matrix-android/matrix-resource-canary/matrix-resource-canary-android/src/main/java/com/tencent/matrix/resource/ActivityLeakFixer.java +++ b/matrix/matrix-android/matrix-resource-canary/matrix-resource-canary-android/src/main/java/com/tencent/matrix/resource/ActivityLeakFixer.java @@ -250,6 +250,10 @@ private static void recycleView(View view) { // Ignored. } + if (view instanceof SwipeRefreshLayout) { + return; + } + if (view.getBackground() != null) { view.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() { @Override