From f94abcf44fc1611f76e55461f48220e621fc31b7 Mon Sep 17 00:00:00 2001 From: John Reck Date: Mon, 10 Oct 2011 15:33:48 -0700 Subject: Load bookmarks asynchronously Bug: 5297900 Change-Id: I8b728cfe06799099e21c402d5da7087507209ffa --- src/com/android/browser/BrowserBookmarksPage.java | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'src/com/android/browser/BrowserBookmarksPage.java') diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java index 2c8a27abe..5a609b133 100644 --- a/src/com/android/browser/BrowserBookmarksPage.java +++ b/src/com/android/browser/BrowserBookmarksPage.java @@ -32,6 +32,7 @@ import android.content.res.Resources; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; +import android.graphics.BitmapFactory.Options; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; @@ -235,11 +236,30 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte } static Bitmap getBitmap(Cursor cursor, int columnIndex) { + return getBitmap(cursor, columnIndex, null); + } + + static ThreadLocal sOptions = new ThreadLocal() { + @Override + protected Options initialValue() { + return new Options(); + }; + }; + static Bitmap getBitmap(Cursor cursor, int columnIndex, Bitmap inBitmap) { byte[] data = cursor.getBlob(columnIndex); if (data == null) { return null; } - return BitmapFactory.decodeByteArray(data, 0, data.length); + Options opts = sOptions.get(); + opts.inBitmap = inBitmap; + opts.inSampleSize = 1; + opts.inScaled = false; + try { + return BitmapFactory.decodeByteArray(data, 0, data.length, opts); + } catch (IllegalArgumentException ex) { + // Failed to re-use bitmap, create a new one + return BitmapFactory.decodeByteArray(data, 0, data.length); + } } private MenuItem.OnMenuItemClickListener mContextItemClickListener = -- cgit v1.2.3