Fix Activity leak

This commit is contained in:
Maxr1998
2020-08-20 14:05:18 +02:00
parent 531a115ecd
commit 53428b51ff
2 changed files with 31 additions and 3 deletions
@@ -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
}
}