Add BroadcastReceiverLiveData class

This is a suprise tool that will help us later
This commit is contained in:
MM20 2021-12-18 22:30:59 +01:00
parent 69597a589b
commit 6c0c6bd6f8
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389

View File

@ -0,0 +1,33 @@
package de.mm20.launcher2.lifecycle
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import androidx.lifecycle.LiveData
class BroadcastReceiverLiveData<T>(
context: Context,
private val intentFilter: IntentFilter,
private val transformFunction: (Context, Intent) -> T
): LiveData<T>() {
private val context = context.applicationContext
private val receiver = object: BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
val newValue = transformFunction(context, intent)
postValue(newValue)
}
}
override fun onActive() {
super.onActive()
context.registerReceiver(receiver, intentFilter)
}
override fun onInactive() {
super.onInactive()
context.unregisterReceiver(receiver)
}
}