am 5ad37baf: Merge "Release bitmap buffer when KeyboardView is detached from Window" into ics-mr0

* commit '5ad37baf1e09416b197da76881a30e79ac2032c7':
  Release bitmap buffer when KeyboardView is detached from Window
This commit is contained in:
Tadashi G. Takaoka 2011-10-14 12:21:17 -07:00 committed by Android Git Automerger
commit 75c4b5fe1b
2 changed files with 12 additions and 8 deletions

View file

@ -974,5 +974,9 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
if (mPreviewPlacer != null) { if (mPreviewPlacer != null) {
mPreviewPlacer.removeAllViews(); mPreviewPlacer.removeAllViews();
} }
if (mBuffer != null) {
mBuffer.recycle();
mBuffer = null;
}
} }
} }

View file

@ -59,8 +59,8 @@ public class LatinKeyboard extends Keyboard {
private final int mSpacebarTextColor; private final int mSpacebarTextColor;
private final int mSpacebarTextShadowColor; private final int mSpacebarTextShadowColor;
private float mSpacebarTextFadeFactor = 0.0f; private float mSpacebarTextFadeFactor = 0.0f;
private final HashMap<Integer, SoftReference<BitmapDrawable>> mSpaceDrawableCache = private final HashMap<Integer, BitmapDrawable> mSpaceDrawableCache =
new HashMap<Integer, SoftReference<BitmapDrawable>>(); new HashMap<Integer, BitmapDrawable>();
private final boolean mIsSpacebarTriggeringPopupByLongPress; private final boolean mIsSpacebarTriggeringPopupByLongPress;
/* Shortcut key and its icons if available */ /* Shortcut key and its icons if available */
@ -249,13 +249,13 @@ public class LatinKeyboard extends Keyboard {
private BitmapDrawable getSpaceDrawable(Locale locale, boolean isAutoCorrection) { private BitmapDrawable getSpaceDrawable(Locale locale, boolean isAutoCorrection) {
final Integer hashCode = Arrays.hashCode( final Integer hashCode = Arrays.hashCode(
new Object[] { locale, isAutoCorrection, mSpacebarTextFadeFactor }); new Object[] { locale, isAutoCorrection, mSpacebarTextFadeFactor });
final SoftReference<BitmapDrawable> ref = mSpaceDrawableCache.get(hashCode); final BitmapDrawable cached = mSpaceDrawableCache.get(hashCode);
BitmapDrawable drawable = (ref == null) ? null : ref.get(); if (cached != null) {
if (drawable == null) { return cached;
drawable = new BitmapDrawable(mRes, drawSpacebar(
locale, isAutoCorrection, mSpacebarTextFadeFactor));
mSpaceDrawableCache.put(hashCode, new SoftReference<BitmapDrawable>(drawable));
} }
final BitmapDrawable drawable = new BitmapDrawable(mRes, drawSpacebar(
locale, isAutoCorrection, mSpacebarTextFadeFactor));
mSpaceDrawableCache.put(hashCode, drawable);
return drawable; return drawable;
} }