summaryrefslogtreecommitdiff
path: root/app/src
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2020-06-09 21:39:49 +0200
committerByteHamster <info@bytehamster.com>2020-06-09 21:55:52 +0200
commitd557621df953c72ffa525045e62d3840f1b93321 (patch)
tree66241db2a99c705c4ca5a2db6bdfb570594029df /app/src
parenta7b38bd152e6891d5ed7effb0302a9666cb52e0c (diff)
downloadAntennaPod-d557621df953c72ffa525045e62d3840f1b93321.zip
Fixed leaking fragments in recycledViewPool
Diffstat (limited to 'app/src')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/EpisodeItemListAdapter.java13
-rw-r--r--app/src/main/java/de/danoeh/antennapod/view/viewholder/EpisodeItemViewHolder.java2
2 files changed, 14 insertions, 1 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/EpisodeItemListAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/EpisodeItemListAdapter.java
index 7099d6f3a..8efc89c9a 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/EpisodeItemListAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/EpisodeItemListAdapter.java
@@ -86,6 +86,19 @@ public class EpisodeItemListAdapter extends RecyclerView.Adapter<EpisodeItemView
protected void afterBindViewHolder(EpisodeItemViewHolder holder, int pos) {
}
+ @Override
+ public void onViewRecycled(@NonNull EpisodeItemViewHolder holder) {
+ super.onViewRecycled(holder);
+ // Set all listeners to null. This is required to prevent leaking fragments that have set a listener.
+ // Activity -> recycledViewPool -> EpisodeItemViewHolder -> Listener -> Fragment (can not be garbage collected)
+ holder.itemView.setOnClickListener(null);
+ holder.secondaryActionButton.setOnClickListener(null);
+ holder.dragHandle.setOnTouchListener(null);
+ holder.coverHolder.setOnTouchListener(null);
+ holder.container.setOnCreateContextMenuListener(null);
+ holder.container.setOnLongClickListener(null);
+ }
+
/**
* {@link #notifyItemChanged(int)} is final, so we can not override.
* Calling {@link #notifyItemChanged(int)} may bind the item to a new ViewHolder and execute a transition.
diff --git a/app/src/main/java/de/danoeh/antennapod/view/viewholder/EpisodeItemViewHolder.java b/app/src/main/java/de/danoeh/antennapod/view/viewholder/EpisodeItemViewHolder.java
index b7e1728b5..3c577f791 100644
--- a/app/src/main/java/de/danoeh/antennapod/view/viewholder/EpisodeItemViewHolder.java
+++ b/app/src/main/java/de/danoeh/antennapod/view/viewholder/EpisodeItemViewHolder.java
@@ -39,7 +39,7 @@ import de.danoeh.antennapod.view.CircularProgressBar;
public class EpisodeItemViewHolder extends RecyclerView.ViewHolder {
private static final String TAG = "EpisodeItemViewHolder";
- private final View container;
+ public final View container;
public final ImageView dragHandle;
private final TextView placeholder;
private final ImageView cover;