diff options
author | John Reck <jreck@google.com> | 2011-10-10 15:33:48 -0700 |
---|---|---|
committer | John Reck <jreck@google.com> | 2012-04-18 14:29:03 -0700 |
commit | f94abcf44fc1611f76e55461f48220e621fc31b7 (patch) | |
tree | 678fab453c53611388e27cde68371192e194082f /src/com/android/browser/BrowserBookmarksPage.java | |
parent | f1286a455eeacd02dfcca1335e6a7a9f87433c1b (diff) | |
download | packages_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.java | 22 |
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 = |