Closed MilicTG closed 1 year ago
@MilicTG thanks for the feedback. I updated a fix on main brach. This error is because wrong manage of di with hilt and Singleton player.
If you confirm me that the error is fixed, I close this issue.
Yep that fixed the issue but now the notification is gone and when you kill the app music continues to play.
But Notification don't show and when close app music still play
Thanks for the feedback. Today I fix it if I can :)
Yes, now the notification is gone. Wish you success!
I fix this problem when i clear NotificationManager and SessionMedia Provide in DI Module, and create an instance of them inside SimpleMediaService `package com.maxrave.simpmusic.service
import android.annotation.SuppressLint import android.content.Intent import android.util.Log import androidx.media.app.NotificationCompat import androidx.media3.common.Player import androidx.media3.common.util.UnstableApi import androidx.media3.exoplayer.ExoPlayer import androidx.media3.session.MediaNotification import androidx.media3.session.MediaSession import androidx.media3.session.MediaSessionService import androidx.media3.ui.PlayerNotificationManager import com.google.android.gms.common.internal.Constants import com.maxrave.simpmusic.R import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import javax.inject.Inject import javax.inject.Named
@AndroidEntryPoint class SimpleMediaService : MediaSessionService() {
@Inject
@Named("playerInstance")
lateinit var player: ExoPlayer
lateinit var mediaSession: MediaSession
lateinit var notificationManager: SimpleMediaNotificationManager
@UnstableApi
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
notificationManager.startNotificationService(
mediaSessionService = this,
mediaSession = mediaSession
)
return super.onStartCommand(intent, flags, startId)
}
override fun onCreate() {
super.onCreate()
mediaSession = MediaSession.Builder(this, player).build()
notificationManager = SimpleMediaNotificationManager(
context = this,
player = player
)
}
override fun onDestroy() {
super.onDestroy()
mediaSession.release()
player.release()
}
override fun onGetSession(controllerInfo: MediaSession.ControllerInfo): MediaSession =
mediaSession
@UnstableApi
override fun onUpdateNotification(session: MediaSession, startInForegroundRequired: Boolean) {
super.onUpdateNotification(session, startInForegroundRequired)
}
override fun onTaskRemoved(rootIntent: Intent?) {
super.onTaskRemoved(rootIntent)
player.stop()
}
}
And in Module
import android.app.Application
import android.content.Context
import android.util.Log
import androidx.media3.common.AudioAttributes
import androidx.media3.common.C
import androidx.media3.common.util.UnstableApi
import androidx.media3.exoplayer.DefaultLoadControl
import androidx.media3.exoplayer.DefaultRenderersFactory
import androidx.media3.exoplayer.ExoPlayer
import androidx.media3.exoplayer.trackselection.DefaultTrackSelector
import androidx.media3.exoplayer.upstream.DefaultAllocator
import androidx.media3.session.MediaSession
import com.maxrave.simpmusic.service.SimpleMediaNotificationManager
import com.maxrave.simpmusic.service.SimpleMediaServiceHandler
import dagger.Module
import dagger.Provides
import dagger.Reusable
import dagger.hilt.InstallIn
import dagger.hilt.android.components.ServiceComponent
import dagger.hilt.android.components.ViewModelComponent
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.android.scopes.ServiceScoped
import dagger.hilt.android.scopes.ViewModelScoped
import dagger.hilt.components.SingletonComponent
import dagger.hilt.migration.DisableInstallInCheck
import javax.inject.Named
import javax.inject.Singleton
@Module @InstallIn(SingletonComponent::class) object MusicServiceModule { private var playerCounter = 0 // Biến đếm
@Provides
@Singleton
// @ServiceScoped // @Provides fun provideAudioAttributes(): AudioAttributes = AudioAttributes.Builder() .setContentType(C.AUDIO_CONTENT_TYPE_MUSIC) .setUsage(C.USAGE_MEDIA) .build() // @UnstableApi // @Provides // @Singleton // fun provideLoadControl(): DefaultLoadControl = DefaultLoadControl.Builder().setAllocator( // DefaultAllocator(true, 16) // ) // .build() @UnstableApi @Provides @Singleton // @ServiceScoped // @Provides fun provideRendererFactory(application: Application): DefaultRenderersFactory = DefaultRenderersFactory(application)
@UnstableApi
@Provides
@Singleton
// @ServiceScoped // @Provides @Named("playerInstance") fun providePlayer( application: Application, audioAttributes: AudioAttributes, defaultRenderersFactory: DefaultRenderersFactory // loadControl: DefaultLoadControl ): ExoPlayer { playerCounter++ Log.d("MusicServiceModule", "providePlayer: NEW PLAYER ${playerCounter}") val player = ExoPlayer.Builder(application, defaultRenderersFactory) .setHandleAudioBecomingNoisy(true) .setTrackSelector(DefaultTrackSelector(application)) .setWakeMode(C.WAKE_MODE_LOCAL) // .setLoadControl(loadControl) .build() player.setAudioAttributes(audioAttributes, true) return player } @UnstableApi @Provides @Singleton // @ServiceScoped // @Provides fun provideServiceHandler( @Named("playerInstance") player: ExoPlayer ): SimpleMediaServiceHandler = SimpleMediaServiceHandler( player = player ) }`
@maxrave-dev This fixes the problem with notifications and background playing but sometimes there is again that bug sending message to a Handler on a dead thread.
I all and thanks for the feedback. I just update a fix.
Apparently everything was fine, but the problem was doing player.release() when the service was destroyed.
I have uploaded some changes in it to reset the player. It's more of a workaround, I'll keep checking the issue.
This seems to fix the issue, thanks.
hey , first of all thanks for you gave us a guidance usage of jetpack media lib. but I think this problem still continue, and actually I think this cause a leak because you don' t release the player. And the player is still awake. When you release the player this cause that problem. And you also don't remove the listener from player which you have added inside of SimpleMediaServiceHandler init function. Do you have any idea ? I couldn't figure it out.
when you are playing the song and kill the app then start the app again there is this error a media source is unknown
java.lang.IllegalStateException: Handler (android.os.Handler) {d34acce} sending message to a Handler on a dead thread at android.os.MessageQueue.enqueueMessage(MessageQueue.java:574) at android.os.Handler.enqueueMessage(Handler.java:778) at android.os.Handler.sendMessageAtTime(Handler.java:727) at android.os.Handler.sendMessageDelayed(Handler.java:697) at android.os.Handler.sendMessage(Handler.java:635) at android.os.Message.sendToTarget(Message.java:482) at androidx.media3.common.util.SystemHandlerWrapper$SystemMessage.sendToTarget(SystemHandlerWrapper.java:155) at androidx.media3.exoplayer.ExoPlayerImplInternal.setMediaSources(ExoPlayerImplInternal.java:366) at androidx.media3.exoplayer.ExoPlayerImpl.setMediaSourcesInternal(ExoPlayerImpl.java:2239) at androidx.media3.exoplayer.ExoPlayerImpl.setMediaSources(ExoPlayerImpl.java:608) at androidx.media3.exoplayer.ExoPlayerImpl.setMediaItems(ExoPlayerImpl.java:571) at androidx.media3.common.BasePlayer.setMediaItems(BasePlayer.java:56) at androidx.media3.common.BasePlayer.setMediaItem(BasePlayer.java:41) at com.rcudev.player_service.service.SimpleMediaServiceHandler.addMediaItem(SimpleMediaServiceHandler.kt:27) at com.rcudev.simplemediaplayer.common.ui.SimpleMediaViewModel.loadData(SimpleMediaViewModel.kt:117) at com.rcudev.simplemediaplayer.common.ui.SimpleMediaViewModel.access$loadData(SimpleMediaViewModel.kt:22) at com.rcudev.simplemediaplayer.common.ui.SimpleMediaViewModel$1.invokeSuspend(SimpleMediaViewModel.kt:39) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith(DispatchedContinuation.kt:367) at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable(Cancellable.kt:30) at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable$default(Cancellable.kt:25) at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:110) at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126) at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56) at kotlinx.coroutines.BuildersKt.launch(Unknown Source:1) at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch$default(Builders.common.kt:47) at kotlinx.coroutines.BuildersKt.launch$default(Unknown Source:1) at com.rcudev.simplemediaplayer.common.ui.SimpleMediaViewModel.<init>(SimpleMediaViewModel.kt:38) at com.rcudev.simplemediaplayer.DaggerSimpleMediaPlayerApp_HiltComponents_SingletonC$ViewModelCImpl$SwitchingProvider.get(DaggerSimpleMediaPlayerApp_HiltComponents_SingletonC.java:463) at dagger.hilt.android.internal.lifecycle.HiltViewModelFactory$1.create(HiltViewModelFactory.java:102) at androidx.lifecycle.AbstractSavedStateViewModelFactory.create(AbstractSavedStateViewModelFactory.kt:90) at dagger.hilt.android.internal.lifecycle.HiltViewModelFactory.create(HiltViewModelFactory.java:114) at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.kt:187) at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.kt:153) at androidx.lifecycle.ViewModelLazy.getValue(ViewModelLazy.kt:53) at androidx.lifecycle.ViewModelLazy.getValue(ViewModelLazy.kt:35) at com.rcudev.simplemediaplayer.common.ui.SimpleMediaActivity.getViewModel(SimpleMediaActivity.kt:20) at com.rcudev.simplemediaplayer.common.ui.SimpleMediaActivity.access$getViewModel(SimpleMediaActivity.kt:17) at com.rcudev.simplemediaplayer.common.ui.SimpleMediaActivity$onCreate$1$1$1$1.invoke(SimpleMediaActivity.kt:33) at com.rcudev.simplemediaplayer.common.ui.SimpleMediaActivity$onCreate$1$1$1$1.invoke(SimpleMediaActivity.kt:31) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:116) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34) at androidx.navigation.compose.NavHostKt$NavHost$4$2.invoke(NavHost.kt:163) 2023-04-22 19:56:24.198 1453-1453 MessageQueue com.rcudev.simplemediaplayer W at androidx.navigation.compose.NavHostKt$NavHost$4$2.invoke(NavHost.kt:162) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34) at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228) at androidx.compose.runtime.saveable.SaveableStateHolderImpl.SaveableStateProvider(SaveableStateHolder.kt:84) at androidx.navigation.compose.NavBackStackEntryProviderKt.SaveableStateProvider(NavBackStackEntryProvider.kt:65) at androidx.navigation.compose.NavBackStackEntryProviderKt.access$SaveableStateProvider(NavBackStackEntryProvider.kt:1) at androidx.navigation.compose.NavBackStackEntryProviderKt$LocalOwnersProvider$1.invoke(NavBackStackEntryProvider.kt:52) at androidx.navigation.compose.NavBackStackEntryProviderKt$LocalOwnersProvider$1.invoke(NavBackStackEntryProvider.kt:51) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34) at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228) at androidx.navigation.compose.NavBackStackEntryProviderKt.LocalOwnersProvider(NavBackStackEntryProvider.kt:47) at androidx.navigation.compose.NavHostKt$NavHost$4.invoke(NavHost.kt:162) at androidx.navigation.compose.NavHostKt$NavHost$4.invoke(NavHost.kt:141) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:116) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34) at androidx.compose.animation.CrossfadeKt$Crossfade$5$1.invoke(Crossfade.kt:133) at androidx.compose.animation.CrossfadeKt$Crossfade$5$1.invoke(Crossfade.kt:128) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34) at androidx.compose.animation.CrossfadeKt.Crossfade(Crossfade.kt:142) at androidx.compose.animation.CrossfadeKt.Crossfade(Crossfade.kt:73) at androidx.navigation.compose.NavHostKt.NavHost(NavHost.kt:141) at androidx.navigation.compose.NavHostKt$NavHost$5.invoke(Unknown Source:13) at androidx.navigation.compose.NavHostKt$NavHost$5.invoke(Unknown Source:10) at androidx.compose.runtime.RecomposeScopeImpl.compose(RecomposeScopeImpl.kt:162) at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd(Composer.kt:2465) at androidx.compose.runtime.ComposerImpl.skipToGroupEnd(Composer.kt:2756) at androidx.compose.material3.TextKt.ProvideTextStyle(Text.kt:361) at androidx.compose.material3.MaterialThemeKt$MaterialTheme$1.invoke(MaterialTheme.kt:81) at androidx.compose.material3.MaterialThemeKt$MaterialTheme$1.invoke(MaterialTheme.kt:80) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34) at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228) at androidx.compose.material3.MaterialThemeKt.MaterialTheme(MaterialTheme.kt:73) at com.rcudev.simplemediaplayer.common.ui.theme.ThemeKt.SimpleMediaPlayerTheme(Theme.kt:63) at com.rcudev.simplemediaplayer.common.ui.theme.ThemeKt$SimpleMediaPlayerTheme$2.invoke(Unknown Source:17) at com.rcudev.simplemediaplayer.common.ui.theme.ThemeKt$SimpleMediaPlayerTheme$2.invoke(Unknown Source:10) at androidx.compose.runtime.RecomposeScopeImpl.compose(RecomposeScopeImpl.kt:162) at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd(Composer.kt:2465) at androidx.compose.runtime.ComposerImpl.skipToGroupEnd(Composer.kt:2756) at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke(ComposeView.android.kt:252) 2023-04-22 19:56:24.199 1453-1453 MessageQueue com.rcudev.simplemediaplayer W at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke(ComposeView.android.kt:251) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34) at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228) at androidx.compose.ui.platform.CompositionLocalsKt.ProvideCommonCompositionLocals(CompositionLocals.kt:194) at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3.invoke(AndroidCompositionLocals.android.kt:123) at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3.invoke(AndroidCompositionLocals.android.kt:122) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34) at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228) at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt.ProvideAndroidCompositionLocals(AndroidCompositionLocals.android.kt:114) at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$4.invoke(Unknown Source:12) at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$4.invoke(Unknown Source:10) at androidx.compose.runtime.RecomposeScopeImpl.compose(RecomposeScopeImpl.kt:162) at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd(Composer.kt:2465) at androidx.compose.runtime.ComposerImpl.skipCurrentGroup(Composer.kt:2733) at androidx.compose.runtime.ComposerImpl$doCompose$2$5.invoke(Composer.kt:3364) at androidx.compose.runtime.ComposerImpl$doCompose$2$5.invoke(Composer.kt:3342) at androidx.compose.runtime.SnapshotStateKt__DerivedStateKt.observeDerivedStateRecalculations(DerivedState.kt:341) at androidx.compose.runtime.SnapshotStateKt.observeDerivedStateRecalculations(Unknown Source:1) at androidx.compose.runtime.ComposerImpl.doCompose(Composer.kt:3342) at androidx.compose.runtime.ComposerImpl.recompose$runtime_release(Composer.kt:3307) at androidx.compose.runtime.CompositionImpl.recompose(Composition.kt:772) at androidx.compose.runtime.Recomposer.performRecompose(Recomposer.kt:1047) at androidx.compose.runtime.Recomposer.access$performRecompose(Recomposer.kt:124) at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke(Recomposer.kt:541) at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke(Recomposer.kt:510) at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame(AndroidUiFrameClock.android.kt:34) at androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch(AndroidUiDispatcher.android.kt:109) at androidx.compose.ui.platform.AndroidUiDispatcher.access$performFrameDispatch(AndroidUiDispatcher.android.kt:41) at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(AndroidUiDispatcher.android.kt:69) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1449) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1459) at android.view.Choreographer.doCallbacks(Choreographer.java:1089) at android.view.Choreographer.doFrame(Choreographer.java:998) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1431) at android.os.Handler.handleCallback(Handler.java:942) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:210) at android.os.Looper.loop(Looper.java:299) at android.app.ActivityThread.main(ActivityThread.java:8252) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:559) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:954) 2023-04-22 19:56:24.204 1453-1453 MessageQueue com.rcudev.simplemediaplayer W Handler (android.os.Handler) {d34acce} sending message to a Handler on a dead thread java.lang.IllegalStateException: Handler (android.os.Handler) {d34acce} sending message to a Handler on a dead thread at android.os.MessageQueue.enqueueMessage(MessageQueue.java:574) at android.os.Handler.enqueueMessage(Handler.java:778) at android.os.Handler.sendMessageAtTime(Handler.java:727) at android.os.Handler.sendMessageDelayed(Handler.java:697) at android.os.Handler.sendMessage(Handler.java:635) at android.os.Message.sendToTarget(Message.java:482) at androidx.media3.common.util.SystemHandlerWrapper$SystemMessage.sendToTarget(SystemHandlerWrapper.java:155) at androidx.media3.exoplayer.ExoPlayerImplInternal.prepare(ExoPlayerImplInternal.java:315) at androidx.media3.exoplayer.ExoPlayerImpl.prepare(ExoPlayerImpl.java:539) at com.rcudev.player_service.service.SimpleMediaServiceHandler.addMediaItem(SimpleMediaServiceHandler.kt:28) at com.rcudev.simplemediaplayer.common.ui.SimpleMediaViewModel.loadData(SimpleMediaViewModel.kt:117) at com.rcudev.simplemediaplayer.common.ui.SimpleMediaViewModel.access$loadData(SimpleMediaViewModel.kt:22) at com.rcudev.simplemediaplayer.common.ui.SimpleMediaViewModel$1.invokeSuspend(SimpleMediaViewModel.kt:39) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith(DispatchedContinuation.kt:367) at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable(Cancellable.kt:30) at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable$default(Cancellable.kt:25) at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:110) at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126) at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56) at kotlinx.coroutines.BuildersKt.launch(Unknown Source:1) at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch$default(Builders.common.kt:47) at kotlinx.coroutines.BuildersKt.launch$default(Unknown Source:1) at com.rcudev.simplemediaplayer.common.ui.SimpleMediaViewModel.<init>(SimpleMediaViewModel.kt:38) at com.rcudev.simplemediaplayer.DaggerSimpleMediaPlayerApp_HiltComponents_SingletonC$ViewModelCImpl$SwitchingProvider.get(DaggerSimpleMediaPlayerApp_HiltComponents_SingletonC.java:463) at dagger.hilt.android.internal.lifecycle.HiltViewModelFactory$1.create(HiltViewModelFactory.java:102) at androidx.lifecycle.AbstractSavedStateViewModelFactory.create(AbstractSavedStateViewModelFactory.kt:90) at dagger.hilt.android.internal.lifecycle.HiltViewModelFactory.create(HiltViewModelFactory.java:114) at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.kt:187) at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.kt:153) at androidx.lifecycle.ViewModelLazy.getValue(ViewModelLazy.kt:53) at androidx.lifecycle.ViewModelLazy.getValue(ViewModelLazy.kt:35) at com.rcudev.simplemediaplayer.common.ui.SimpleMediaActivity.getViewModel(SimpleMediaActivity.kt:20) at com.rcudev.simplemediaplayer.common.ui.SimpleMediaActivity.access$getViewModel(SimpleMediaActivity.kt:17) at com.rcudev.simplemediaplayer.common.ui.SimpleMediaActivity$onCreate$1$1$1$1.invoke(SimpleMediaActivity.kt:33) at com.rcudev.simplemediaplayer.common.ui.SimpleMediaActivity$onCreate$1$1$1$1.invoke(SimpleMediaActivity.kt:31) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:116) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34) at androidx.navigation.compose.NavHostKt$NavHost$4$2.invoke(NavHost.kt:163) at androidx.navigation.compose.NavHostKt$NavHost$4$2.invoke(NavHost.kt:162) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34) 2023-04-22 19:56:24.204 1453-1453 MessageQueue com.rcudev.simplemediaplayer W at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228) at androidx.compose.runtime.saveable.SaveableStateHolderImpl.SaveableStateProvider(SaveableStateHolder.kt:84) at androidx.navigation.compose.NavBackStackEntryProviderKt.SaveableStateProvider(NavBackStackEntryProvider.kt:65) at androidx.navigation.compose.NavBackStackEntryProviderKt.access$SaveableStateProvider(NavBackStackEntryProvider.kt:1) at androidx.navigation.compose.NavBackStackEntryProviderKt$LocalOwnersProvider$1.invoke(NavBackStackEntryProvider.kt:52) at androidx.navigation.compose.NavBackStackEntryProviderKt$LocalOwnersProvider$1.invoke(NavBackStackEntryProvider.kt:51) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34) at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228) at androidx.navigation.compose.NavBackStackEntryProviderKt.LocalOwnersProvider(NavBackStackEntryProvider.kt:47) at androidx.navigation.compose.NavHostKt$NavHost$4.invoke(NavHost.kt:162) at androidx.navigation.compose.NavHostKt$NavHost$4.invoke(NavHost.kt:141) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:116) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34) at androidx.compose.animation.CrossfadeKt$Crossfade$5$1.invoke(Crossfade.kt:133) at androidx.compose.animation.CrossfadeKt$Crossfade$5$1.invoke(Crossfade.kt:128) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34) at androidx.compose.animation.CrossfadeKt.Crossfade(Crossfade.kt:142) at androidx.compose.animation.CrossfadeKt.Crossfade(Crossfade.kt:73) at androidx.navigation.compose.NavHostKt.NavHost(NavHost.kt:141) at androidx.navigation.compose.NavHostKt$NavHost$5.invoke(Unknown Source:13) at androidx.navigation.compose.NavHostKt$NavHost$5.invoke(Unknown Source:10) at androidx.compose.runtime.RecomposeScopeImpl.compose(RecomposeScopeImpl.kt:162) at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd(Composer.kt:2465) at androidx.compose.runtime.ComposerImpl.skipToGroupEnd(Composer.kt:2756) at androidx.compose.material3.TextKt.ProvideTextStyle(Text.kt:361) at androidx.compose.material3.MaterialThemeKt$MaterialTheme$1.invoke(MaterialTheme.kt:81) at androidx.compose.material3.MaterialThemeKt$MaterialTheme$1.invoke(MaterialTheme.kt:80) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34) at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228) at androidx.compose.material3.MaterialThemeKt.MaterialTheme(MaterialTheme.kt:73) at com.rcudev.simplemediaplayer.common.ui.theme.ThemeKt.SimpleMediaPlayerTheme(Theme.kt:63) at com.rcudev.simplemediaplayer.common.ui.theme.ThemeKt$SimpleMediaPlayerTheme$2.invoke(Unknown Source:17) at com.rcudev.simplemediaplayer.common.ui.theme.ThemeKt$SimpleMediaPlayerTheme$2.invoke(Unknown Source:10) at androidx.compose.runtime.RecomposeScopeImpl.compose(RecomposeScopeImpl.kt:162) at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd(Composer.kt:2465) at androidx.compose.runtime.ComposerImpl.skipToGroupEnd(Composer.kt:2756) at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke(ComposeView.android.kt:252) at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke(ComposeView.android.kt:251) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34) 2023-04-22 19:56:24.204 1453-1453 MessageQueue com.rcudev.simplemediaplayer W at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228) at androidx.compose.ui.platform.CompositionLocalsKt.ProvideCommonCompositionLocals(CompositionLocals.kt:194) at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3.invoke(AndroidCompositionLocals.android.kt:123) at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3.invoke(AndroidCompositionLocals.android.kt:122) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34) at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228) at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt.ProvideAndroidCompositionLocals(AndroidCompositionLocals.android.kt:114) at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$4.invoke(Unknown Source:12) at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$4.invoke(Unknown Source:10) at androidx.compose.runtime.RecomposeScopeImpl.compose(RecomposeScopeImpl.kt:162) at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd(Composer.kt:2465) at androidx.compose.runtime.ComposerImpl.skipCurrentGroup(Composer.kt:2733) at androidx.compose.runtime.ComposerImpl$doCompose$2$5.invoke(Composer.kt:3364) at androidx.compose.runtime.ComposerImpl$doCompose$2$5.invoke(Composer.kt:3342) at androidx.compose.runtime.SnapshotStateKt__DerivedStateKt.observeDerivedStateRecalculations(DerivedState.kt:341) at androidx.compose.runtime.SnapshotStateKt.observeDerivedStateRecalculations(Unknown Source:1) at androidx.compose.runtime.ComposerImpl.doCompose(Composer.kt:3342) at androidx.compose.runtime.ComposerImpl.recompose$runtime_release(Composer.kt:3307) at androidx.compose.runtime.CompositionImpl.recompose(Composition.kt:772) at androidx.compose.runtime.Recomposer.performRecompose(Recomposer.kt:1047) at androidx.compose.runtime.Recomposer.access$performRecompose(Recomposer.kt:124) at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke(Recomposer.kt:541) at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke(Recomposer.kt:510) at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame(AndroidUiFrameClock.android.kt:34) at androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch(AndroidUiDispatcher.android.kt:109) at androidx.compose.ui.platform.AndroidUiDispatcher.access$performFrameDispatch(AndroidUiDispatcher.android.kt:41) at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(AndroidUiDispatcher.android.kt:69) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1449) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1459) at android.view.Choreographer.doCallbacks(Choreographer.java:1089) at android.view.Choreographer.doFrame(Choreographer.java:998) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1431) at android.os.Handler.handleCallback(Handler.java:942) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:210) at android.os.Looper.loop(Looper.java:299) at android.app.ActivityThread.main(ActivityThread.java:8252) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:559) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:954)