diff options
author | Brad Fitzpatrick <brad@danga.com> | 2009-04-27 10:51:06 -0700 |
---|---|---|
committer | Brad Fitzpatrick <brad@danga.com> | 2009-04-27 11:05:45 -0700 |
commit | 7bc2202d9af2fc9b0e4a28f1c1a5b475a7cf0a25 (patch) | |
tree | fd2ecaa51c908d249649e0fa0079ac865fbf7d3c /graphics/java | |
parent | 284e9b27537eeb5e353415c55da55941607ee5f1 (diff) | |
download | frameworks_base-7bc2202d9af2fc9b0e4a28f1c1a5b475a7cf0a25.zip frameworks_base-7bc2202d9af2fc9b0e4a28f1c1a5b475a7cf0a25.tar.gz frameworks_base-7bc2202d9af2fc9b0e4a28f1c1a5b475a7cf0a25.tar.bz2 |
Lazily allocate the mBounds Rect in Drawable.
For background, see:
http://kohlerm.blogspot.com/2009/04/analyzing-memory-usage-off-your-android.html
Thanks, Markus!
Diffstat (limited to 'graphics/java')
-rw-r--r-- | graphics/java/android/graphics/drawable/Drawable.java | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/graphics/java/android/graphics/drawable/Drawable.java b/graphics/java/android/graphics/drawable/Drawable.java index 42e28e8..ca0ed7e 100644 --- a/graphics/java/android/graphics/drawable/Drawable.java +++ b/graphics/java/android/graphics/drawable/Drawable.java @@ -97,10 +97,12 @@ import android.util.TypedValue; */ public abstract class Drawable { + private static final Rect ZERO_BOUNDS_RECT = new Rect(); + private int[] mStateSet = StateSet.WILD_CARD; private int mLevel = 0; private int mChangingConfigurations = 0; - private Rect mBounds = new Rect(); + private Rect mBounds = ZERO_BOUNDS_RECT; // lazily becomes a new Rect() /*package*/ Callback mCallback = null; private boolean mVisible = true; @@ -118,7 +120,11 @@ public abstract class Drawable { */ public void setBounds(int left, int top, int right, int bottom) { Rect oldBounds = mBounds; - + + if (oldBounds == ZERO_BOUNDS_RECT) { + oldBounds = mBounds = new Rect(); + } + if (oldBounds.left != left || oldBounds.top != top || oldBounds.right != right || oldBounds.bottom != bottom) { mBounds.set(left, top, right, bottom); |