mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-20 03:08:19 +00:00
Fix last bit of WidgetTray jank issue
b/21133230 Change-Id: Ic198b8d21be1b0f3465cd4efc30a240e3ec4304a
This commit is contained in:
@@ -55,6 +55,8 @@ public class WidgetPreviewLoader {
|
||||
/**
|
||||
* Weak reference objects, do not prevent their referents from being made finalizable,
|
||||
* finalized, and then reclaimed.
|
||||
* Note: synchronized block used for this variable is expensive and the block should always
|
||||
* be posted to a background thread.
|
||||
*/
|
||||
@Thunk Set<Bitmap> mUnusedBitmaps =
|
||||
Collections.newSetFromMap(new WeakHashMap<Bitmap, Boolean>());
|
||||
@@ -554,10 +556,15 @@ public class WidgetPreviewLoader {
|
||||
// in the tasks's onCancelled() call, and if cancelled while the task is writing to
|
||||
// disk, it will be cancelled in the task's onPostExecute() call.
|
||||
if (mTask.mBitmapToRecycle != null) {
|
||||
synchronized (mUnusedBitmaps) {
|
||||
mUnusedBitmaps.add(mTask.mBitmapToRecycle);
|
||||
}
|
||||
mTask.mBitmapToRecycle = null;
|
||||
mWorkerHandler.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
synchronized (mUnusedBitmaps) {
|
||||
mUnusedBitmaps.add(mTask.mBitmapToRecycle);
|
||||
}
|
||||
mTask.mBitmapToRecycle = null;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -660,14 +667,19 @@ public class WidgetPreviewLoader {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCancelled(Bitmap preview) {
|
||||
protected void onCancelled(final Bitmap preview) {
|
||||
// If we've cancelled while the task is running, then can return the bitmap to the
|
||||
// recycled set immediately. Otherwise, it will be recycled after the preview is written
|
||||
// to disk.
|
||||
if (preview != null) {
|
||||
synchronized (mUnusedBitmaps) {
|
||||
mUnusedBitmaps.add(preview);
|
||||
}
|
||||
mWorkerHandler.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
synchronized (mUnusedBitmaps) {
|
||||
mUnusedBitmaps.add(preview);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user