From 1bfadb066984f760c46f3955df2f72111bbaf0a5 Mon Sep 17 00:00:00 2001 From: eddyizm Date: Mon, 24 Nov 2025 20:46:46 -0800 Subject: [PATCH] fix: refactor start queue to put the db writing in the background --- .../tempo/service/MediaManager.java | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/com/cappielloantonio/tempo/service/MediaManager.java b/app/src/main/java/com/cappielloantonio/tempo/service/MediaManager.java index 2a551512..02cbd239 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/service/MediaManager.java +++ b/app/src/main/java/com/cappielloantonio/tempo/service/MediaManager.java @@ -1,14 +1,13 @@ package com.cappielloantonio.tempo.service; import android.content.ComponentName; -import android.util.Log; import android.os.Handler; import android.os.Looper; +import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.OptIn; -import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.LiveData; import androidx.lifecycle.Observer; import androidx.media3.common.MediaItem; @@ -188,27 +187,28 @@ public class MediaManager { try { if (mediaBrowserListenableFuture.isDone()) { final MediaBrowser browser = mediaBrowserListenableFuture.get(); + final List items = MappingUtil.mapMediaItems(media); + new Handler(Looper.getMainLooper()).post(() -> { + justStarted.set(true); + browser.setMediaItems(items, startIndex, 0); + browser.prepare(); + + Player.Listener timelineListener = new Player.Listener() { + @Override + public void onTimelineChanged(Timeline timeline, int reason) { + int itemCount = browser.getMediaItemCount(); + if (itemCount > 0 && startIndex >= 0 && startIndex < itemCount) { + browser.seekTo(startIndex, 0); + browser.play(); + browser.removeListener(this); + } + } + }; + browser.addListener(timelineListener); + }); backgroundExecutor.execute(() -> { - final List items = MappingUtil.mapMediaItems(media); enqueueDatabase(media, true, 0); - new Handler(Looper.getMainLooper()).post(() -> { - justStarted.set(true); - browser.setMediaItems(items, startIndex, 0); - browser.prepare(); - Player.Listener timelineListener = new Player.Listener() { - @Override - public void onTimelineChanged(Timeline timeline, int reason) { - int itemCount = browser.getMediaItemCount(); - if (itemCount > 0 && startIndex >= 0 && startIndex < itemCount) { - browser.seekTo(startIndex, 0); - browser.play(); - browser.removeListener(this); - } - } - }; - browser.addListener(timelineListener); - }); }); } } catch (ExecutionException | InterruptedException e) {