Skip to content

Commit 81e6f47

Browse files
committed
Ensure operation on a background thread
1 parent a742ac4 commit 81e6f47

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

app/src/main/kotlin/com/simplemobiletools/musicplayer/playback/library/MediaItemProvider.kt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import androidx.media3.common.MediaMetadata
1212
import androidx.media3.common.MediaMetadata.MediaType
1313
import androidx.media3.common.util.UnstableApi
1414
import androidx.media3.session.MediaSession.MediaItemsWithStartPosition
15-
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
15+
import com.google.common.util.concurrent.MoreExecutors
1616
import com.simplemobiletools.musicplayer.R
1717
import com.simplemobiletools.musicplayer.extensions.*
1818
import com.simplemobiletools.musicplayer.helpers.TAB_ALBUMS
@@ -23,6 +23,7 @@ import com.simplemobiletools.musicplayer.helpers.TAB_PLAYLISTS
2323
import com.simplemobiletools.musicplayer.helpers.TAB_TRACKS
2424
import com.simplemobiletools.musicplayer.models.QueueItem
2525
import com.simplemobiletools.musicplayer.models.toMediaItems
26+
import java.util.concurrent.Executors
2627

2728
private const val STATE_CREATED = 1
2829
private const val STATE_INITIALIZING = 2
@@ -42,6 +43,9 @@ private const val SMP_GENRES_ROOT_ID = "__GENRES__"
4243
*/
4344
@UnstableApi
4445
internal 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

Comments
 (0)