Browse Source

Migrate from lifecycle annotations to DefaultLifecycleObserver

merge-requests/1454/head
Robert Stone 4 years ago
committed by Nicolas Pomepuy
parent
commit
d6dfe4746d
  1. 13
      application/television/src/main/java/org/videolan/television/ui/TimeUpdater.kt
  2. 13
      application/tools/src/main/java/org/videolan/tools/NetworkMonitor.kt
  3. 13
      application/vlc-android/src/org/videolan/vlc/ExternalMonitor.kt
  4. 13
      application/vlc-android/src/org/videolan/vlc/gui/helpers/Navigator.kt
  5. 17
      application/vlc-android/src/org/videolan/vlc/util/Permissions.kt
  6. 18
      application/vlc-android/src/org/videolan/vlc/util/VLCDownloadManager.kt

13
application/television/src/main/java/org/videolan/television/ui/TimeUpdater.kt

@ -27,15 +27,14 @@ import android.content.Intent
import android.content.IntentFilter
import android.widget.TextView
import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent
import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.LifecycleOwner
import java.text.DateFormat
import java.util.*
private const val TAG = "VLC/TimeUpdater"
class TimeUpdater(private val activity: Activity, private val tv: TextView) : LifecycleObserver {
class TimeUpdater(private val activity: Activity, private val tv: TextView) : DefaultLifecycleObserver {
private fun updateTime() {
@ -43,14 +42,12 @@ class TimeUpdater(private val activity: Activity, private val tv: TextView) : Li
tv.text = format.format(Date())
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun register() {
override fun onStart(owner: LifecycleOwner) {
activity.registerReceiver(clockReceiver, IntentFilter(Intent.ACTION_TIME_TICK))
updateTime()
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
fun unregister() = activity.unregisterReceiver(clockReceiver)
override fun onStop(owner: LifecycleOwner) = activity.unregisterReceiver(clockReceiver)
private val clockReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {

13
application/tools/src/main/java/org/videolan/tools/NetworkMonitor.kt

@ -10,15 +10,12 @@ import android.net.ConnectivityManager
import android.net.NetworkCapabilities
import android.os.Build
import androidx.core.content.getSystemService
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent
import androidx.lifecycle.ProcessLifecycleOwner
import androidx.lifecycle.*
import kotlinx.coroutines.flow.MutableStateFlow
import java.net.NetworkInterface
import java.net.SocketException
class NetworkMonitor(private val context: Context) : LifecycleObserver {
class NetworkMonitor(private val context: Context) : DefaultLifecycleObserver {
private var registered = false
private val cm = context.getSystemService<ConnectivityManager>()!!
val connectionFlow = MutableStateFlow(Connection(connected = false, mobile = true, vpn = false))
@ -48,15 +45,15 @@ class NetworkMonitor(private val context: Context) : LifecycleObserver {
ProcessLifecycleOwner.get().lifecycle.addObserver(this@NetworkMonitor)
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun start() {
override fun onStart(owner: LifecycleOwner) {
if (registered) return
registered = true
val networkFilter = IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)
context.registerReceiver(receiver, networkFilter)
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
override fun onStop(owner: LifecycleOwner) = stop()
fun stop() {
if (!registered) return
registered = false

13
application/vlc-android/src/org/videolan/vlc/ExternalMonitor.kt

@ -34,10 +34,7 @@ import android.hardware.usb.UsbManager
import android.net.Uri
import android.util.Log
import androidx.core.content.getSystemService
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent
import androidx.lifecycle.ProcessLifecycleOwner
import androidx.lifecycle.*
import kotlinx.coroutines.*
import kotlinx.coroutines.channels.BroadcastChannel
import kotlinx.coroutines.channels.Channel
@ -59,7 +56,7 @@ import java.lang.ref.WeakReference
private const val TAG = "VLC/ExternalMonitor"
@SuppressLint("StaticFieldLeak")
object ExternalMonitor : BroadcastReceiver(), LifecycleObserver, CoroutineScope by MainScope() {
object ExternalMonitor : BroadcastReceiver(), DefaultLifecycleObserver, CoroutineScope by MainScope() {
private lateinit var ctx: Context
private var registered = false
@ -123,8 +120,7 @@ object ExternalMonitor : BroadcastReceiver(), LifecycleObserver, CoroutineScope
var devices = LiveDataset<UsbDevice>()
@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun register() {
override fun onStart(owner: LifecycleOwner) {
if (registered) return
val ctx = AppContextProvider.appContext
val storageFilter = IntentFilter(Intent.ACTION_MEDIA_MOUNTED)
@ -150,8 +146,7 @@ object ExternalMonitor : BroadcastReceiver(), LifecycleObserver, CoroutineScope
devices.add(ArrayList(usbManager.deviceList.values))
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
internal fun unregister() {
override fun onStop(owner: LifecycleOwner) {
val ctx = AppContextProvider.appContext
if (registered) try {
ctx.unregisterReceiver(this)

13
application/vlc-android/src/org/videolan/vlc/gui/helpers/Navigator.kt

@ -31,9 +31,8 @@ import androidx.core.content.edit
import androidx.core.os.bundleOf
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent
import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.LifecycleOwner
import com.google.android.material.appbar.AppBarLayout
import com.google.android.material.bottomnavigation.BottomNavigationView
import com.google.android.material.navigation.NavigationBarView
@ -55,7 +54,7 @@ import org.videolan.vlc.gui.video.VideoGridFragment
import org.videolan.vlc.util.getScreenWidth
private const val TAG = "Navigator"
class Navigator : BottomNavigationView.OnNavigationItemSelectedListener, LifecycleObserver, INavigator {
class Navigator : BottomNavigationView.OnNavigationItemSelectedListener, DefaultLifecycleObserver, INavigator {
private val defaultFragmentId= R.id.nav_video
override var currentFragmentId : Int = 0
@ -85,14 +84,12 @@ class Navigator : BottomNavigationView.OnNavigationItemSelectedListener, Lifecyc
appbarLayout = findViewById(R.id.appbar)
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun onStart() {
override fun onStart(owner: LifecycleOwner) {
if (currentFragment === null && !currentIdIsExtension()) showFragment(if (currentFragmentId != 0) currentFragmentId else settings.getInt("fragment_id", defaultFragmentId))
navigationView.forEach { it.setOnItemSelectedListener(this) }
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
fun onStop() {
override fun onStop(owner: LifecycleOwner) {
navigationView.forEach { it.setOnItemSelectedListener(null) }
if (isExtensionServiceBinded) {
activity.unbindService(extensionServiceConnection!!)

17
application/vlc-android/src/org/videolan/vlc/util/Permissions.kt

@ -39,9 +39,8 @@ import androidx.core.content.ContextCompat
import androidx.core.content.edit
import androidx.core.net.toUri
import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent
import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.LifecycleOwner
import org.videolan.libvlc.util.AndroidUtil
import org.videolan.medialibrary.interfaces.media.MediaWrapper
import org.videolan.resources.AndroidDevices
@ -192,10 +191,8 @@ object Permissions {
}
.setCancelable(false)
return dialogBuilder.show().apply {
if (activity is AppCompatActivity) activity.lifecycle.addObserver(object : LifecycleObserver {
@Suppress("unused")
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
fun clear() {
if (activity is AppCompatActivity) activity.lifecycle.addObserver(object : DefaultLifecycleObserver {
override fun onDestroy(owner: LifecycleOwner) {
dismiss()
}
})
@ -217,10 +214,8 @@ object Permissions {
.setCancelable(false)
}
return dialogBuilder.show().apply {
activity.lifecycle.addObserver(object : LifecycleObserver {
@Suppress("unused")
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
fun clear() {
activity.lifecycle.addObserver(object : DefaultLifecycleObserver {
override fun onDestroy(owner: LifecycleOwner) {
dismiss()
}
})

18
application/vlc-android/src/org/videolan/vlc/util/VLCDownloadManager.kt

@ -5,14 +5,12 @@ import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.os.Environment
import android.widget.Toast
import androidx.core.content.getSystemService
import androidx.core.net.toUri
import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent
import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.ProcessLifecycleOwner
import kotlinx.coroutines.CompletableDeferred
import kotlinx.coroutines.Dispatchers
@ -26,7 +24,7 @@ import org.videolan.vlc.gui.helpers.hf.getExtWritePermission
import org.videolan.vlc.repository.ExternalSubRepository
object VLCDownloadManager: BroadcastReceiver(), LifecycleObserver {
object VLCDownloadManager: BroadcastReceiver(), DefaultLifecycleObserver {
private val downloadManager = AppContextProvider.appContext.getSystemService<DownloadManager>()!!
private var dlDeferred : CompletableDeferred<SubDlResult>? = null
private lateinit var defaultSubsDirectory : String
@ -49,15 +47,13 @@ object VLCDownloadManager: BroadcastReceiver(), LifecycleObserver {
ProcessLifecycleOwner.get().lifecycle.addObserver(this)
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun register() {
override fun onStart(owner: LifecycleOwner) {
AppContextProvider.appContext.applicationContext.registerReceiver(this, IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE))
}
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
fun unRegister() {
ExternalSubRepository.getInstance(AppContextProvider.appContext).downloadingSubtitles.observeForever {
it?.keys?.forEach {
override fun onDestroy(owner: LifecycleOwner) {
ExternalSubRepository.getInstance(AppContextProvider.appContext).downloadingSubtitles.observeForever { map ->
map?.keys?.forEach {
downloadManager.remove(it)
}
}

Loading…
Cancel
Save