Load bookmarks asynchronously
Bug: 5297900
Change-Id: I8b728cfe06799099e21c402d5da7087507209ffa
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java
index 2c8a27a..5a609b1 100644
--- a/src/com/android/browser/BrowserBookmarksPage.java
+++ b/src/com/android/browser/BrowserBookmarksPage.java
@@ -32,6 +32,7 @@
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 @@
}
static Bitmap getBitmap(Cursor cursor, int columnIndex) {
+ return getBitmap(cursor, columnIndex, null);
+ }
+
+ static ThreadLocal<Options> sOptions = new ThreadLocal<Options>() {
+ @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 =