NO PARTIAL RERUN: Do not return recycled bitmaps
There's also no need to offload WallpaperManager#forgetLoadedBitmap because Bitmap#recycle is asynchronous - and the whole method is synchronized. Fixes 77597550 Test: atest cts/tests/framework/base/activitymanager/src/android/server/am/ActivityManagerMultiDisplayTests.java Change-Id: I88014e21bd05e10c2f524393bb637596708e4e63
This commit is contained in:
@@ -401,7 +401,8 @@ public class WallpaperManager {
|
||||
}
|
||||
}
|
||||
synchronized (this) {
|
||||
if (mCachedWallpaper != null && mCachedWallpaperUserId == userId) {
|
||||
if (mCachedWallpaper != null && mCachedWallpaperUserId == userId
|
||||
&& !mCachedWallpaper.isRecycled()) {
|
||||
return mCachedWallpaper;
|
||||
}
|
||||
mCachedWallpaper = null;
|
||||
|
||||
@@ -444,13 +444,7 @@ public class ImageWallpaper extends WallpaperService {
|
||||
final Surface surface = getSurfaceHolder().getSurface();
|
||||
surface.hwuiDestroy();
|
||||
|
||||
mLoader = new AsyncTask<Void, Void, Bitmap>() {
|
||||
@Override
|
||||
protected Bitmap doInBackground(Void... params) {
|
||||
mWallpaperManager.forgetLoadedWallpaper();
|
||||
return null;
|
||||
}
|
||||
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
mWallpaperManager.forgetLoadedWallpaper();
|
||||
}
|
||||
|
||||
private void scheduleUnloadWallpaper() {
|
||||
|
||||
Reference in New Issue
Block a user