summaryrefslogtreecommitdiffstats
path: root/graphics/java
diff options
context:
space:
mode:
authorBrad Fitzpatrick <brad@danga.com>2009-04-27 10:51:06 -0700
committerBrad Fitzpatrick <brad@danga.com>2009-04-27 11:05:45 -0700
commit7bc2202d9af2fc9b0e4a28f1c1a5b475a7cf0a25 (patch)
treefd2ecaa51c908d249649e0fa0079ac865fbf7d3c /graphics/java
parent284e9b27537eeb5e353415c55da55941607ee5f1 (diff)
downloadframeworks_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.java10
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);