Clean up bitmaps when necessary in the widget tray to prevent likelihood of OOM. (Bug: 5348390)

- Removing some old code to use software layers when rendering widget preview metadata

Change-Id: I0db3daf7d1223e81dac6c901647acbe2ff490c6e
This commit is contained in:
Winson Chung
2011-09-20 14:22:40 -07:00
parent c5d2a7b0d6
commit 099459377a
2 changed files with 86 additions and 37 deletions

View File

@@ -96,6 +96,20 @@ public class PagedViewWidget extends LinearLayout implements Checkable {
setClipToPadding(false);
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
final ImageView image = (ImageView) findViewById(R.id.widget_preview);
if (image != null) {
FastBitmapDrawable preview = (FastBitmapDrawable) image.getDrawable();
if (preview != null && preview.getBitmap() != null) {
preview.getBitmap().recycle();
}
image.setImageDrawable(null);
}
}
public void applyFromAppWidgetProviderInfo(AppWidgetProviderInfo info,
FastBitmapDrawable preview, int maxWidth, int[] cellSpan,
HolographicOutlineHelper holoOutlineHelper) {
@@ -109,11 +123,9 @@ public class PagedViewWidget extends LinearLayout implements Checkable {
mPreviewImageView = image;
final TextView name = (TextView) findViewById(R.id.widget_name);
name.setText(info.label);
name.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
final TextView dims = (TextView) findViewById(R.id.widget_dims);
if (dims != null) {
dims.setText(String.format(mDimensionsFormatString, cellSpan[0], cellSpan[1]));
dims.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
}
@@ -127,11 +139,9 @@ public class PagedViewWidget extends LinearLayout implements Checkable {
mPreviewImageView = image;
final TextView name = (TextView) findViewById(R.id.widget_name);
name.setText(label);
name.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
final TextView dims = (TextView) findViewById(R.id.widget_dims);
if (dims != null) {
dims.setText(String.format(mDimensionsFormatString, 1, 1));
dims.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
}