diff --git a/app/src/main/java/com/fongmi/android/tv/service/PlaybackService.java b/app/src/main/java/com/fongmi/android/tv/service/PlaybackService.java index c361af9a2..0fe22324a 100644 --- a/app/src/main/java/com/fongmi/android/tv/service/PlaybackService.java +++ b/app/src/main/java/com/fongmi/android/tv/service/PlaybackService.java @@ -32,10 +32,13 @@ import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; +import java.util.HashMap; +import java.util.Map; import java.util.Objects; public class PlaybackService extends Service { + private Map cache; private static Players player; public static void start(Players player) { @@ -117,15 +120,21 @@ public class PlaybackService extends Service { } private void setArtwork(NotificationCompat.Builder builder) { - App.execute(() -> { - try { - Bitmap bitmap = Glide.with(App.get()).asBitmap().skipMemoryCache(true).dontAnimate().load(ImgUtil.getUrl(getArtUri())).submit().get(); - setLargeIcon(builder, bitmap); - Notify.show(builder.build()); - bitmap.recycle(); - } catch (Exception ignored) { - } - }); + if (cache.containsKey(getArtUri())) { + setLargeIcon(builder, cache.get(getArtUri())); + } else { + App.execute(() -> glide(builder)); + } + } + + private void glide(NotificationCompat.Builder builder) { + try { + cache.put(getArtUri(), Glide.with(App.get()).asBitmap().skipMemoryCache(true).dontAnimate().load(ImgUtil.getUrl(getArtUri())).submit().get()); + setLargeIcon(builder, cache.get(getArtUri())); + Notify.show(builder.build()); + } catch (Exception e) { + e.printStackTrace(); + } } @Subscribe(threadMode = ThreadMode.MAIN) @@ -136,6 +145,7 @@ public class PlaybackService extends Service { @Override public void onCreate() { super.onCreate(); + cache = new HashMap<>(); EventBus.getDefault().register(this); }