@@ -12,7 +12,7 @@ import androidx.media3.common.MediaMetadata
1212import androidx.media3.common.MediaMetadata.MediaType
1313import androidx.media3.common.util.UnstableApi
1414import androidx.media3.session.MediaSession.MediaItemsWithStartPosition
15- import com.simplemobiletools.commons.helpers.ensureBackgroundThread
15+ import com.google.common.util.concurrent.MoreExecutors
1616import com.simplemobiletools.musicplayer.R
1717import com.simplemobiletools.musicplayer.extensions.*
1818import com.simplemobiletools.musicplayer.helpers.TAB_ALBUMS
@@ -23,6 +23,7 @@ import com.simplemobiletools.musicplayer.helpers.TAB_PLAYLISTS
2323import com.simplemobiletools.musicplayer.helpers.TAB_TRACKS
2424import com.simplemobiletools.musicplayer.models.QueueItem
2525import com.simplemobiletools.musicplayer.models.toMediaItems
26+ import java.util.concurrent.Executors
2627
2728private const val STATE_CREATED = 1
2829private const val STATE_INITIALIZING = 2
@@ -42,6 +43,9 @@ private const val SMP_GENRES_ROOT_ID = "__GENRES__"
4243 */
4344@UnstableApi
4445internal class MediaItemProvider (private val context : Context ) {
46+ private val executor by lazy {
47+ MoreExecutors .listeningDecorator(Executors .newSingleThreadExecutor())
48+ }
4549
4650 inner class MediaItemNode (val item : MediaItem ) {
4751 private val children: MutableList <MediaItem > = ArrayList ()
@@ -154,7 +158,7 @@ internal class MediaItemProvider(private val context: Context) {
154158 return
155159 }
156160
157- ensureBackgroundThread {
161+ executor.execute {
158162 val trackId = current.mediaId.toLong()
159163 val queueItems = mediaItems.mapIndexed { index, mediaItem ->
160164 QueueItem (trackId = mediaItem.mediaId.toLong(), trackOrder = index, isCurrent = false , lastPosition = 0 )
@@ -166,8 +170,7 @@ internal class MediaItemProvider(private val context: Context) {
166170
167171 fun reload () {
168172 state = STATE_INITIALIZING
169-
170- ensureBackgroundThread {
173+ executor.execute {
171174 buildRoot()
172175
173176 try {
0 commit comments