From e6b4379b5fc12d5d4f65ab61430523796571ef26 Mon Sep 17 00:00:00 2001 From: NudeDude Date: Sun, 14 Apr 2019 10:51:10 +0200 Subject: [PATCH] fixed memory leaks --- .../twidda/adapter/ImageAdapter.java | 33 +++++++++++-------- .../twidda/adapter/MessageAdapter.java | 33 ++++++++++++------- .../twidda/adapter/TimelineAdapter.java | 19 +++++++---- .../twidda/adapter/TrendAdapter.java | 14 +++++--- .../twidda/adapter/UserAdapter.java | 16 +++++---- 5 files changed, 72 insertions(+), 43 deletions(-) diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/ImageAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/ImageAdapter.java index c8b96c8e..3d77aaa1 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/ImageAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/ImageAdapter.java @@ -8,15 +8,18 @@ import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; +import java.lang.ref.WeakReference; + public class ImageAdapter extends RecyclerView.Adapter { - private OnImageClickListener l; + private WeakReference itemClickListener; private Bitmap images[]; + public ImageAdapter(OnImageClickListener l) { + itemClickListener = new WeakReference<>(l); images = new Bitmap[0]; - this.l = l; } @@ -52,18 +55,31 @@ public class ImageAdapter extends RecyclerView.Adapter vh.item.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - l.onImageClick(image); + if (itemClickListener.get() != null) + itemClickListener.get().onImageClick(image); } }); vh.item.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { - return l.onImageTouch(image); + if (itemClickListener.get() != null) + return itemClickListener.get().onImageTouch(image); + return false; } }); } + class ImageHolder extends ViewHolder { + final ImageView item; + + ImageHolder(ImageView item) { + super(item); + this.item = item; + } + } + + public interface OnImageClickListener { /** * simple click on image @@ -80,13 +96,4 @@ public class ImageAdapter extends RecyclerView.Adapter */ boolean onImageTouch(Bitmap image); } - - class ImageHolder extends ViewHolder { - final ImageView item; - - ImageHolder(ImageView item) { - super(item); - this.item = item; - } - } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/MessageAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/MessageAdapter.java index 574bf974..6e8533b8 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/MessageAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/MessageAdapter.java @@ -18,6 +18,7 @@ import org.nuclearfog.tag.Tagger.OnTagClickListener; import org.nuclearfog.twidda.R; import org.nuclearfog.twidda.backend.items.Message; +import java.lang.ref.WeakReference; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; @@ -25,18 +26,18 @@ import java.util.List; public class MessageAdapter extends RecyclerView.Adapter { + private WeakReference itemClickListener; private Message messages[]; - private OnItemSelected mListener; - - - private boolean loadImage = true; private int highlight; - private int fontColor = 0xFFFFFFFF; + private int fontColor; + private boolean loadImage; - public MessageAdapter(OnItemSelected listener) { + public MessageAdapter(OnItemSelected l) { + itemClickListener = new WeakReference<>(l); messages = new Message[0]; - this.mListener = listener; + fontColor = 0xFFFFFFFF; + loadImage = true; } @@ -83,7 +84,8 @@ public class MessageAdapter extends RecyclerView.Adapter { - private OnItemClickListener mListener; + private WeakReference itemClickListener; private Tweet tweets[]; + private NumberFormat formatter; - private int highlight = 0xFFFFFFFF; - private int font_color = 0xFFFFFFFF; + private int highlight; + private int font_color; private boolean img_ldr = true; - public TimelineAdapter(OnItemClickListener mListener) { - tweets = new Tweet[0]; + public TimelineAdapter(OnItemClickListener l) { + itemClickListener = new WeakReference<>(l); formatter = NumberFormat.getIntegerInstance(); - this.mListener = mListener; + tweets = new Tweet[0]; + highlight = 0xFFFFFFFF; + font_color = 0xFFFFFFFF; } @@ -89,7 +93,8 @@ public class TimelineAdapter extends Adapter { public void onClick(View v) { RecyclerView rv = (RecyclerView) parent; int position = rv.getChildLayoutPosition(v); - mListener.onItemClick(rv, position); + if (itemClickListener.get() != null) + itemClickListener.get().onItemClick(rv, position); } }); return new ItemHolder(v); diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/TrendAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/TrendAdapter.java index c93cf389..95f9d4d6 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/TrendAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/TrendAdapter.java @@ -13,18 +13,21 @@ import android.widget.TextView; import org.nuclearfog.twidda.R; import org.nuclearfog.twidda.backend.items.Trend; +import java.lang.ref.WeakReference; import java.util.List; public class TrendAdapter extends Adapter { + + private WeakReference itemClickListener; private Trend trends[]; - private OnItemClickListener mListener; - private int font_color = 0xFFFFFFFF; + private int font_color; - public TrendAdapter(OnItemClickListener mListener) { + public TrendAdapter(OnItemClickListener l) { + itemClickListener = new WeakReference<>(l); trends = new Trend[0]; - this.mListener = mListener; + font_color = 0xFFFFFFFF; } @@ -58,7 +61,8 @@ public class TrendAdapter extends Adapter { public void onClick(View v) { RecyclerView rv = (RecyclerView) parent; int position = rv.getChildLayoutPosition(v); - mListener.onItemClick(rv, position); + if (itemClickListener.get() != null) + itemClickListener.get().onItemClick(rv, position); } }); return new ItemHolder(v); diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/UserAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/UserAdapter.java index 08f1eab7..0da0f712 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/UserAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/UserAdapter.java @@ -16,19 +16,22 @@ import com.squareup.picasso.Picasso; import org.nuclearfog.twidda.R; import org.nuclearfog.twidda.backend.items.TwitterUser; +import java.lang.ref.WeakReference; import java.util.List; public class UserAdapter extends Adapter { + private WeakReference itemClickListener; private TwitterUser mUser[]; - private OnItemClickListener mListener; - private int font_color = 0xFFFFFFFF; - private boolean loadImage = true; + private int font_color; + private boolean loadImage; - public UserAdapter(OnItemClickListener mListener) { + public UserAdapter(OnItemClickListener l) { + itemClickListener = new WeakReference<>(l); mUser = new TwitterUser[0]; - this.mListener = mListener; + font_color = 0xFFFFFFFF; + loadImage = true; } @@ -73,7 +76,8 @@ public class UserAdapter extends Adapter { public void onClick(View v) { RecyclerView rv = (RecyclerView) parent; int position = rv.getChildLayoutPosition(v); - mListener.onItemClick(rv, position); + if (itemClickListener.get() != null) + itemClickListener.get().onItemClick(rv, position); } }); return new ItemHolder(v);