properly cancel avatar tasks

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/ui/adapter/ConversationAdapter.java | 5 
src/main/java/eu/siacs/conversations/ui/adapter/ListItemAdapter.java     | 5 
src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java      | 3 
3 files changed, 8 insertions(+), 5 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/ui/adapter/ConversationAdapter.java 🔗

@@ -126,12 +126,12 @@ public class ConversationAdapter extends ArrayAdapter<Conversation> {
 
 		@Override
 		protected Bitmap doInBackground(Conversation... params) {
-			return activity.avatarService().get(params[0], activity.getPixel(56));
+			return activity.avatarService().get(params[0], 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);
@@ -145,6 +145,7 @@ public class ConversationAdapter extends ArrayAdapter<Conversation> {
 		if (cancelPotentialWork(conversation, imageView)) {
 			final Bitmap bm = activity.avatarService().get(conversation, activity.getPixel(56), true);
 			if (bm != null) {
+				cancelPotentialWork(conversation, imageView);
 				imageView.setImageBitmap(bm);
 				imageView.setBackgroundColor(0x00000000);
 			} else {

src/main/java/eu/siacs/conversations/ui/adapter/ListItemAdapter.java 🔗

@@ -106,12 +106,12 @@ public class ListItemAdapter extends ArrayAdapter<ListItem> {
 
 		@Override
 		protected Bitmap doInBackground(ListItem... params) {
-			return activity.avatarService().get(params[0], activity.getPixel(48));
+			return activity.avatarService().get(params[0], activity.getPixel(48), 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);
@@ -125,6 +125,7 @@ public class ListItemAdapter extends ArrayAdapter<ListItem> {
 		if (cancelPotentialWork(item, imageView)) {
 			final Bitmap bm = activity.avatarService().get(item,activity.getPixel(48),true);
 			if (bm != null) {
+				cancelPotentialWork(item, imageView);
 				imageView.setImageBitmap(bm);
 				imageView.setBackgroundColor(0x00000000);
 			} else {

src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java 🔗

@@ -754,7 +754,7 @@ public class MessageAdapter extends ArrayAdapter<Message> {
 
 		@Override
 		protected void onPostExecute(Bitmap bitmap) {
-			if (bitmap != null) {
+			if (bitmap != null && !isCancelled()) {
 				final ImageView imageView = imageViewReference.get();
 				if (imageView != null) {
 					imageView.setImageBitmap(bitmap);
@@ -768,6 +768,7 @@ public class MessageAdapter extends ArrayAdapter<Message> {
 		if (cancelPotentialWork(message, imageView)) {
 			final Bitmap bm = activity.avatarService().get(message, activity.getPixel(48), true);
 			if (bm != null) {
+				cancelPotentialWork(message, imageView);
 				imageView.setImageBitmap(bm);
 				imageView.setBackgroundColor(0x00000000);
 			} else {