mirror of
https://github.com/jellyfin/jellyfin-android.git
synced 2026-09-03 05:10:27 +03:00
Fix Activity leak
This commit is contained in:
@@ -2,21 +2,21 @@ package org.jellyfin.mobile.bridge
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.os.Messenger
|
||||
import android.webkit.JavascriptInterface
|
||||
import org.jellyfin.mobile.WebappActivity
|
||||
import org.jellyfin.mobile.player.ExoPlayerFormats
|
||||
import org.jellyfin.mobile.player.PlayerActivity
|
||||
import org.jellyfin.mobile.utils.Constants
|
||||
import org.jellyfin.mobile.utils.LifecycleAwareHandler
|
||||
|
||||
class NativePlayer(private val activity: WebappActivity) {
|
||||
|
||||
private val playerMessageHandler = Handler(Looper.getMainLooper()) { message ->
|
||||
private val playerMessageHandler = LifecycleAwareHandler(activity.lifecycle, Handler.Callback { message ->
|
||||
val function = message.obj as? String
|
||||
if (function != null) activity.loadUrl("javascript:$function")
|
||||
true
|
||||
}
|
||||
})
|
||||
private val webappMessenger = Messenger(playerMessageHandler)
|
||||
|
||||
@JavascriptInterface
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
package org.jellyfin.mobile.utils
|
||||
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.os.Message
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.LifecycleObserver
|
||||
import androidx.lifecycle.OnLifecycleEvent
|
||||
|
||||
class LifecycleAwareHandler(lifecycle: Lifecycle, callback: Callback) : Handler(Looper.getMainLooper()), LifecycleObserver {
|
||||
|
||||
private var callback: Callback? = when {
|
||||
lifecycle.currentState >= Lifecycle.State.INITIALIZED -> {
|
||||
lifecycle.addObserver(this)
|
||||
callback
|
||||
}
|
||||
else -> null
|
||||
}
|
||||
|
||||
override fun handleMessage(msg: Message) {
|
||||
callback?.handleMessage(msg)
|
||||
}
|
||||
|
||||
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
|
||||
fun onDestroy() {
|
||||
callback = null
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user