summaryrefslogtreecommitdiffstats
path: root/src/com/android/browser/BrowserBookmarksPage.java
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2011-10-10 15:33:48 -0700
committerJohn Reck <jreck@google.com>2012-04-18 14:29:03 -0700
commitf94abcf44fc1611f76e55461f48220e621fc31b7 (patch)
tree678fab453c53611388e27cde68371192e194082f /src/com/android/browser/BrowserBookmarksPage.java
parentf1286a455eeacd02dfcca1335e6a7a9f87433c1b (diff)
downloadpackages_apps_browser-f94abcf44fc1611f76e55461f48220e621fc31b7.zip
packages_apps_browser-f94abcf44fc1611f76e55461f48220e621fc31b7.tar.gz
packages_apps_browser-f94abcf44fc1611f76e55461f48220e621fc31b7.tar.bz2
Load bookmarks asynchronously
Bug: 5297900 Change-Id: I8b728cfe06799099e21c402d5da7087507209ffa
Diffstat (limited to 'src/com/android/browser/BrowserBookmarksPage.java')
-rw-r--r--src/com/android/browser/BrowserBookmarksPage.java22
1 files changed, 21 insertions, 1 deletions
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.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<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 =