From e859e69674cd13e82fb6363e219b80853e87ef15 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Sun, 27 Jan 2019 10:16:18 +0100 Subject: make bitmap worker task static --- .../de/pixart/messenger/ui/adapter/AccountAdapter.java | 16 ++++++++++------ .../pixart/messenger/ui/adapter/ConversationAdapter.java | 15 ++++++++++----- .../de/pixart/messenger/ui/adapter/ListItemAdapter.java | 16 ++++++++++------ .../de/pixart/messenger/ui/adapter/MediaAdapter.java | 14 ++++++++++---- .../pixart/messenger/ui/adapter/MediaPreviewAdapter.java | 12 +++++------- .../de/pixart/messenger/ui/adapter/MessageAdapter.java | 12 ++++++++---- 6 files changed, 53 insertions(+), 32 deletions(-) (limited to 'src/main/java/de/pixart/messenger/ui/adapter') diff --git a/src/main/java/de/pixart/messenger/ui/adapter/AccountAdapter.java b/src/main/java/de/pixart/messenger/ui/adapter/AccountAdapter.java index e060d8828..2624828a8 100644 --- a/src/main/java/de/pixart/messenger/ui/adapter/AccountAdapter.java +++ b/src/main/java/de/pixart/messenger/ui/adapter/AccountAdapter.java @@ -97,17 +97,21 @@ public class AccountAdapter extends ArrayAdapter { } } - class BitmapWorkerTask extends AsyncTask { + private static class BitmapWorkerTask extends AsyncTask { private final WeakReference imageViewReference; private Account account = null; - public BitmapWorkerTask(ImageView imageView) { + BitmapWorkerTask(ImageView imageView) { imageViewReference = new WeakReference<>(imageView); } @Override protected Bitmap doInBackground(Account... params) { this.account = params[0]; + final XmppActivity activity = XmppActivity.find(imageViewReference); + if (activity == null) { + return null; + } return activity.avatarService().get(this.account, activity.getPixel(48), isCancelled()); } @@ -123,7 +127,7 @@ public class AccountAdapter extends ArrayAdapter { } } - public void loadAvatar(Account account, ImageView imageView) { + private void loadAvatar(Account account, ImageView imageView) { if (cancelPotentialWork(account, imageView)) { final Bitmap bm = activity.avatarService().get(account, activity.getPixel(48), true); if (bm != null) { @@ -149,7 +153,7 @@ public class AccountAdapter extends ArrayAdapter { void onClickTglAccountState(Account account, boolean state); } - public static boolean cancelPotentialWork(Account account, ImageView imageView) { + private static boolean cancelPotentialWork(Account account, ImageView imageView) { final BitmapWorkerTask bitmapWorkerTask = getBitmapWorkerTask(imageView); if (bitmapWorkerTask != null) { @@ -177,12 +181,12 @@ public class AccountAdapter extends ArrayAdapter { static class AsyncDrawable extends BitmapDrawable { private final WeakReference bitmapWorkerTaskReference; - public AsyncDrawable(Resources res, Bitmap bitmap, BitmapWorkerTask bitmapWorkerTask) { + AsyncDrawable(Resources res, Bitmap bitmap, BitmapWorkerTask bitmapWorkerTask) { super(res, bitmap); bitmapWorkerTaskReference = new WeakReference<>(bitmapWorkerTask); } - public BitmapWorkerTask getBitmapWorkerTask() { + BitmapWorkerTask getBitmapWorkerTask() { return bitmapWorkerTaskReference.get(); } } diff --git a/src/main/java/de/pixart/messenger/ui/adapter/ConversationAdapter.java b/src/main/java/de/pixart/messenger/ui/adapter/ConversationAdapter.java index a60631523..e97a8d407 100644 --- a/src/main/java/de/pixart/messenger/ui/adapter/ConversationAdapter.java +++ b/src/main/java/de/pixart/messenger/ui/adapter/ConversationAdapter.java @@ -390,33 +390,38 @@ public class ConversationAdapter extends RecyclerView.Adapter bitmapWorkerTaskReference; - public AsyncDrawable(Resources res, Bitmap bitmap, BitmapWorkerTask bitmapWorkerTask) { + AsyncDrawable(Resources res, Bitmap bitmap, BitmapWorkerTask bitmapWorkerTask) { super(res, bitmap); bitmapWorkerTaskReference = new WeakReference<>(bitmapWorkerTask); } - public BitmapWorkerTask getBitmapWorkerTask() { + BitmapWorkerTask getBitmapWorkerTask() { return bitmapWorkerTaskReference.get(); } } - class BitmapWorkerTask extends AsyncTask { + static class BitmapWorkerTask extends AsyncTask { private final WeakReference imageViewReference; private Conversation conversation = null; - public BitmapWorkerTask(ImageView imageView) { + BitmapWorkerTask(ImageView imageView) { imageViewReference = new WeakReference<>(imageView); } + @Override protected Bitmap doInBackground(Conversation... params) { this.conversation = params[0]; + final XmppActivity activity = XmppActivity.find(imageViewReference); + if (activity == null) { + return null; + } return activity.avatarService().get(this.conversation, activity.getPixel(56), isCancelled()); } @Override protected void onPostExecute(Bitmap bitmap) { - if (bitmap != null) { + if (bitmap != null && !isCancelled()) { final ImageView imageView = imageViewReference.get(); if (imageView != null) { imageView.setImageBitmap(bitmap); diff --git a/src/main/java/de/pixart/messenger/ui/adapter/ListItemAdapter.java b/src/main/java/de/pixart/messenger/ui/adapter/ListItemAdapter.java index e99353f13..71f8aaa34 100644 --- a/src/main/java/de/pixart/messenger/ui/adapter/ListItemAdapter.java +++ b/src/main/java/de/pixart/messenger/ui/adapter/ListItemAdapter.java @@ -133,17 +133,21 @@ public class ListItemAdapter extends ArrayAdapter { void onTagClicked(String tag); } - class BitmapWorkerTask extends AsyncTask { + private static class BitmapWorkerTask extends AsyncTask { private final WeakReference imageViewReference; private ListItem item = null; - public BitmapWorkerTask(ImageView imageView) { + BitmapWorkerTask(ImageView imageView) { imageViewReference = new WeakReference<>(imageView); } @Override protected Bitmap doInBackground(ListItem... params) { this.item = params[0]; + final XmppActivity activity = XmppActivity.find(imageViewReference); + if (activity == null) { + return null; + } return activity.avatarService().get(this.item, activity.getPixel(56), isCancelled()); } @@ -159,7 +163,7 @@ public class ListItemAdapter extends ArrayAdapter { } } - public void loadAvatar(ListItem item, ImageView imageView) { + private void loadAvatar(ListItem item, ImageView imageView) { if (cancelPotentialWork(item, imageView)) { final Bitmap bm = activity.avatarService().get(item, activity.getPixel(48), true); if (bm != null) { @@ -181,7 +185,7 @@ public class ListItemAdapter extends ArrayAdapter { } } - public static boolean cancelPotentialWork(ListItem item, ImageView imageView) { + private static boolean cancelPotentialWork(ListItem item, ImageView imageView) { final BitmapWorkerTask bitmapWorkerTask = getBitmapWorkerTask(imageView); if (bitmapWorkerTask != null) { @@ -209,12 +213,12 @@ public class ListItemAdapter extends ArrayAdapter { static class AsyncDrawable extends BitmapDrawable { private final WeakReference bitmapWorkerTaskReference; - public AsyncDrawable(Resources res, Bitmap bitmap, BitmapWorkerTask bitmapWorkerTask) { + AsyncDrawable(Resources res, Bitmap bitmap, BitmapWorkerTask bitmapWorkerTask) { super(res, bitmap); bitmapWorkerTaskReference = new WeakReference<>(bitmapWorkerTask); } - public BitmapWorkerTask getBitmapWorkerTask() { + BitmapWorkerTask getBitmapWorkerTask() { return bitmapWorkerTaskReference.get(); } } diff --git a/src/main/java/de/pixart/messenger/ui/adapter/MediaAdapter.java b/src/main/java/de/pixart/messenger/ui/adapter/MediaAdapter.java index 8b8c05d05..50460c0f1 100644 --- a/src/main/java/de/pixart/messenger/ui/adapter/MediaAdapter.java +++ b/src/main/java/de/pixart/messenger/ui/adapter/MediaAdapter.java @@ -89,7 +89,7 @@ public class MediaAdapter extends RecyclerView.Adapter { + private static class BitmapWorkerTask extends AsyncTask { private final WeakReference imageViewReference; private Attachment attachment = null; + private final int mediaSize; - BitmapWorkerTask(ImageView imageView) { + BitmapWorkerTask(int mediaSize, ImageView imageView) { + this.mediaSize = mediaSize; imageViewReference = new WeakReference<>(imageView); } @Override protected Bitmap doInBackground(Attachment... params) { this.attachment = params[0]; + final XmppActivity activity = XmppActivity.find(imageViewReference); + if (activity == null) { + return null; + } return activity.xmppConnectionService.getFileBackend().getPreviewForUri(this.attachment, mediaSize, false); } diff --git a/src/main/java/de/pixart/messenger/ui/adapter/MediaPreviewAdapter.java b/src/main/java/de/pixart/messenger/ui/adapter/MediaPreviewAdapter.java index 64cb63439..2c7ce7471 100644 --- a/src/main/java/de/pixart/messenger/ui/adapter/MediaPreviewAdapter.java +++ b/src/main/java/de/pixart/messenger/ui/adapter/MediaPreviewAdapter.java @@ -158,7 +158,7 @@ public class MediaPreviewAdapter extends RecyclerView.Adapter { + private static class BitmapWorkerTask extends AsyncTask { private final WeakReference imageViewReference; private Attachment attachment = null; @@ -168,14 +168,12 @@ public class MediaPreviewAdapter extends RecyclerView.Adapter implements CopyTextVie ViewUtil.view(activity, file); } - public void showLocation(Message message) { + private void showLocation(Message message) { for (Intent intent : GeoHelper.createGeoIntentsFromMessage(this.getContext(), message)) { if (intent.resolveActivity(getContext().getPackageManager()) != null) { getContext().startActivity(intent); @@ -1139,7 +1139,7 @@ public class MessageAdapter extends ArrayAdapter implements CopyTextVie this.mIndicateReceived = p.getBoolean("indicate_received", activity.getResources().getBoolean(R.bool.indicate_received)); } - public void loadAvatar(Message message, ImageView imageView, int size) { + private void loadAvatar(Message message, ImageView imageView, int size) { if (cancelPotentialWork(message, imageView)) { final Bitmap bm = activity.avatarService().get(message, size, true); if (bm != null) { @@ -1260,12 +1260,12 @@ public class MessageAdapter extends ArrayAdapter implements CopyTextVie public void onDestroyActionMode(ActionMode mode) {} } - class BitmapWorkerTask extends AsyncTask { + private static class BitmapWorkerTask extends AsyncTask { private final WeakReference imageViewReference; private final int size; private Message message = null; - public BitmapWorkerTask(ImageView imageView, int size) { + BitmapWorkerTask(ImageView imageView, int size) { imageViewReference = new WeakReference<>(imageView); this.size = size; } @@ -1273,6 +1273,10 @@ public class MessageAdapter extends ArrayAdapter implements CopyTextVie @Override protected Bitmap doInBackground(Message... params) { this.message = params[0]; + final XmppActivity activity = XmppActivity.find(imageViewReference); + if (activity == null) { + return null; + } return activity.avatarService().get(this.message, size, isCancelled()); } -- cgit v1.2.3