Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3492061b authored by Hans Boehm's avatar Hans Boehm
Browse files

Prefer WeakReference.refersTo() to get()

This is an initial pass over frameworks/core to avoid WeakReference
get(), since that can cause the referent to be unnecessarily retained.
Most of these were found by searching for "get() == null".

Bug: 215259836
Test: Treehugger
Change-Id: I5227b05ca22e83b886ccf6713989961076df3f8c
parent 22c14816
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -119,7 +119,7 @@ class ActivityTransitionState {
        for (int i = mExitTransitionCoordinators.size() - 1; i >= 0; i--) {
            WeakReference<ExitTransitionCoordinator> oldRef
                    = mExitTransitionCoordinators.valueAt(i);
            if (oldRef.get() == null) {
            if (oldRef.refersTo(null)) {
                mExitTransitionCoordinators.removeAt(i);
            }
        }
+2 −3
Original line number Diff line number Diff line
@@ -678,8 +678,7 @@ public class ResourcesManager {
        int refCount = mResourceImpls.size();
        for (int i = 0; i < refCount; i++) {
            WeakReference<ResourcesImpl> weakImplRef = mResourceImpls.valueAt(i);
            ResourcesImpl impl = weakImplRef != null ? weakImplRef.get() : null;
            if (resourceImpl == impl) {
            if (weakImplRef != null && weakImplRef.refersTo(resourceImpl)) {
                return mResourceImpls.keyAt(i);
            }
        }
@@ -1671,7 +1670,7 @@ public class ResourcesManager {
                for (int i = mResourceImpls.size() - 1; i >= 0; i--) {
                    final ResourcesKey key = mResourceImpls.keyAt(i);
                    final WeakReference<ResourcesImpl> impl = mResourceImpls.valueAt(i);
                    if (impl == null || impl.get() == null
                    if (impl == null || impl.refersTo(null)
                            || !ArrayUtils.contains(key.mLoaders, loader)) {
                        continue;
                    }
+1 −1
Original line number Diff line number Diff line
@@ -198,7 +198,7 @@ public class ColorStateList extends ComplexColor implements Parcelable {
            // Prune the cache before adding new items.
            final int N = sCache.size();
            for (int i = N - 1; i >= 0; i--) {
                if (sCache.valueAt(i).get() == null) {
                if (sCache.valueAt(i).refersTo(null)) {
                    sCache.removeAt(i);
                }
            }
+1 −1
Original line number Diff line number Diff line
@@ -2011,7 +2011,7 @@ public class Resources {

            // Clean up references to garbage collected themes
            if (mThemeRefs.size() > mThemeRefsNextFlushSize) {
                mThemeRefs.removeIf(ref -> ref.get() == null);
                mThemeRefs.removeIf(ref -> ref.refersTo(null));
                mThemeRefsNextFlushSize = Math.max(MIN_THEME_REFS_FLUSH_SIZE,
                        2 * mThemeRefs.size());
            }
+1 −1
Original line number Diff line number Diff line
@@ -257,7 +257,7 @@ public class ResourcesLoader {

        for (int i = mChangeCallbacks.size() - 1; i >= 0; i--) {
            final WeakReference<Object> key = mChangeCallbacks.keyAt(i);
            if (key.get() == null) {
            if (key.refersTo(null)) {
                mChangeCallbacks.removeAt(i);
            } else {
                uniqueCallbacks.add(mChangeCallbacks.valueAt(i));
Loading