Cancel image requests for view holder detached from the window.

Fixes: 147510845
Test: manual
Change-Id: I3558adca40b2b0bcd310912736ba12559efb6359
diff --git a/src/com/android/car/media/PlaybackFragment.java b/src/com/android/car/media/PlaybackFragment.java
index 182fd4c..62f272d 100644
--- a/src/com/android/car/media/PlaybackFragment.java
+++ b/src/com/android/car/media/PlaybackFragment.java
@@ -180,6 +180,20 @@
 
             return active;
         }
+
+        void onViewAttachedToWindow() {
+            if (mShowThumbnailForQueueItem) {
+                Context context = mView.getContext();
+                mThumbnailBinder.maybeRestartLoading(context);
+            }
+        }
+
+        void onViewDetachedFromWindow() {
+            if (mShowThumbnailForQueueItem) {
+                Context context = mView.getContext();
+                mThumbnailBinder.maybeCancelLoading(context);
+            }
+        }
     }
 
 
@@ -249,6 +263,18 @@
         }
 
         @Override
+        public void onViewAttachedToWindow(@NonNull QueueViewHolder holder) {
+            super.onViewAttachedToWindow(holder);
+            holder.onViewAttachedToWindow();
+        }
+
+        @Override
+        public void onViewDetachedFromWindow(@NonNull QueueViewHolder holder) {
+            super.onViewDetachedFromWindow(holder);
+            holder.onViewDetachedFromWindow();
+        }
+
+        @Override
         public int getItemCount() {
             return mQueueItems.size();
         }
diff --git a/src/com/android/car/media/browse/BrowseAdapter.java b/src/com/android/car/media/browse/BrowseAdapter.java
index fc0fd99..9ba3cd1 100644
--- a/src/com/android/car/media/browse/BrowseAdapter.java
+++ b/src/com/android/car/media/browse/BrowseAdapter.java
@@ -182,6 +182,18 @@
     }
 
     @Override
+    public void onViewAttachedToWindow(@NonNull BrowseViewHolder holder) {
+        super.onViewAttachedToWindow(holder);
+        holder.onViewAttachedToWindow(mContext);
+    }
+
+    @Override
+    public void onViewDetachedFromWindow(@NonNull BrowseViewHolder holder) {
+        super.onViewDetachedFromWindow(holder);
+        holder.onViewDetachedFromWindow(mContext);
+    }
+
+    @Override
     public int getItemViewType(int position) {
         return getItem(position).mViewType.ordinal();
     }
diff --git a/src/com/android/car/media/browse/BrowseViewHolder.java b/src/com/android/car/media/browse/BrowseViewHolder.java
index bf8df77..aa4449f 100644
--- a/src/com/android/car/media/browse/BrowseViewHolder.java
+++ b/src/com/android/car/media/browse/BrowseViewHolder.java
@@ -104,4 +104,12 @@
         ViewUtils.setVisible(mSubTitleDownloadIcon, showSubtitle && downloaded);
         ViewUtils.setVisible(mSubTitleExplicitIcon, showSubtitle && explicit);
     }
+
+    void onViewAttachedToWindow(Context context) {
+        mAlbumArtBinder.maybeRestartLoading(context);
+    }
+
+    void onViewDetachedFromWindow(Context context) {
+        mAlbumArtBinder.maybeCancelLoading(context);
+    }
 }