From 01375b321ceae0c7959015b860ed1dfad8d64f26 Mon Sep 17 00:00:00 2001 From: Alan Evans Date: Fri, 21 Aug 2020 17:05:25 -0300 Subject: [PATCH] Don't release bitmaps managed by Glide, and don't cache group preview avatars. --- .../linkpreview/LinkPreviewRepository.java | 6 +----- .../thoughtcrime/securesms/util/AvatarUtil.java | 14 +++++++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/linkpreview/LinkPreviewRepository.java b/app/src/main/java/org/thoughtcrime/securesms/linkpreview/LinkPreviewRepository.java index e799ef8ade..2a871f2fc5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/linkpreview/LinkPreviewRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/linkpreview/LinkPreviewRepository.java @@ -225,8 +225,6 @@ public class LinkPreviewRepository { Optional thumbnail = bitmapToAttachment(bitmap, Bitmap.CompressFormat.WEBP, MediaUtil.IMAGE_WEBP); - if (bitmap != null) bitmap.recycle(); - callback.onSuccess(new LinkPreview(packUrl, title, thumbnail)); } else { callback.onError(Error.PREVIEW_NOT_AVAILABLE); @@ -265,11 +263,9 @@ public class LinkPreviewRepository { if (AvatarHelper.hasAvatar(context, groupRecord.getRecipientId())) { Recipient recipient = Recipient.resolved(groupRecord.getRecipientId()); - Bitmap bitmap = AvatarUtil.loadIconBitmapSquare(context, recipient, 512, 512); + Bitmap bitmap = AvatarUtil.loadIconBitmapSquareNoCache(context, recipient, 512, 512); thumbnail = bitmapToAttachment(bitmap, Bitmap.CompressFormat.WEBP, MediaUtil.IMAGE_WEBP); - - if (bitmap != null) bitmap.recycle(); } callback.onSuccess(new LinkPreview(groupUrl, title, thumbnail)); diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/AvatarUtil.java b/app/src/main/java/org/thoughtcrime/securesms/util/AvatarUtil.java index 747828cfe6..42b169098e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/AvatarUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/AvatarUtil.java @@ -71,13 +71,17 @@ public final class AvatarUtil { requestCircle(GlideApp.with(context).asDrawable(), context, recipient).into(target); } - public static Bitmap loadIconBitmapSquare(@NonNull Context context, - @NonNull Recipient recipient, - int width, - int height) + public static Bitmap loadIconBitmapSquareNoCache(@NonNull Context context, + @NonNull Recipient recipient, + int width, + int height) throws ExecutionException, InterruptedException { - return requestSquare(GlideApp.with(context).asBitmap(), context, recipient).submit(width, height).get(); + return requestSquare(GlideApp.with(context).asBitmap(), context, recipient) + .skipMemoryCache(true) + .diskCacheStrategy(DiskCacheStrategy.NONE) + .submit(width, height) + .get(); } @WorkerThread