Changing global variable for local variable to prevent memory leaks
The array mTmpObjArray is not properly clean but ther is no need
for the array to be global since every time is used is provided
so a use of a local variable will make sure is never leaked.
Fix: 269163620
Test: the flake related to memory leak on testWorkspace should dissapear
Change-Id: I29fb3dd6419f621f2ccce9db2fc5ed86358f7516
diff --git a/src/com/android/launcher3/views/FloatingIconView.java b/src/com/android/launcher3/views/FloatingIconView.java
index c3633db..4d0e2af 100644
--- a/src/com/android/launcher3/views/FloatingIconView.java
+++ b/src/com/android/launcher3/views/FloatingIconView.java
@@ -80,7 +80,6 @@
public static final float SHAPE_PROGRESS_DURATION = 0.10f;
private static final RectF sTmpRectF = new RectF();
- private static final Object[] sTmpObjArray = new Object[1];
private Runnable mEndRunnable;
private CancellationSignal mLoadIconSignal;
@@ -289,12 +288,13 @@
} else {
int width = (int) pos.width();
int height = (int) pos.height();
+ Object[] tmpObjArray = new Object[1];
if (supportsAdaptiveIcons) {
boolean shouldThemeIcon = btvIcon instanceof FastBitmapDrawable
&& ((FastBitmapDrawable) btvIcon).isThemed();
- drawable = getFullDrawable(l, info, width, height, shouldThemeIcon, sTmpObjArray);
+ drawable = getFullDrawable(l, info, width, height, shouldThemeIcon, tmpObjArray);
if (drawable instanceof AdaptiveIconDrawable) {
- badge = getBadge(l, info, sTmpObjArray[0]);
+ badge = getBadge(l, info, tmpObjArray[0]);
} else {
// The drawable we get back is not an adaptive icon, so we need to use the
// BubbleTextView icon that is already legacy treated.
@@ -306,7 +306,7 @@
drawable = btvIcon;
} else {
drawable = getFullDrawable(l, info, width, height, true /* shouldThemeIcon */,
- sTmpObjArray);
+ tmpObjArray);
}
}
}
@@ -679,7 +679,6 @@
mOriginalIcon = null;
mOnTargetChangeRunnable = null;
mBadge = null;
- sTmpObjArray[0] = null;
sRecycledFetchIconId = sFetchIconId;
mIconLoadResult = null;
mClipIconView.recycle();