In order to avoid observer missing events, post them at least 50ms apart
This commit is contained in:
@@ -69,6 +69,8 @@ class BaresipService: Service() {
|
|||||||
private var hotSpotIsEnabled = false
|
private var hotSpotIsEnabled = false
|
||||||
private var hotSpotAddresses = mapOf<String, String>()
|
private var hotSpotAddresses = mapOf<String, String>()
|
||||||
private var mediaPlayer: MediaPlayer? = null
|
private var mediaPlayer: MediaPlayer? = null
|
||||||
|
private val serviceEvents = mutableListOf<Event<ServiceEvent>>()
|
||||||
|
private var previousEvent: Long = 0
|
||||||
|
|
||||||
@SuppressLint("WakelockTimeout")
|
@SuppressLint("WakelockTimeout")
|
||||||
override fun onCreate() {
|
override fun onCreate() {
|
||||||
@@ -880,8 +882,23 @@ class BaresipService: Service() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
serviceEvent.postValue(Event(ServiceEvent(newEvent ?: event, arrayListOf(uap, callp),
|
|
||||||
System.currentTimeMillis())))
|
// In order to avoid observer missing events, post them at least 50ms apart
|
||||||
|
val currentTime = System.currentTimeMillis()
|
||||||
|
val e = Event(ServiceEvent(newEvent ?: event, arrayListOf(uap, callp), currentTime))
|
||||||
|
if (previousEvent + 50 > currentTime) {
|
||||||
|
val delay = previousEvent + 50 - currentTime
|
||||||
|
previousEvent = currentTime + delay
|
||||||
|
serviceEvents.add(e)
|
||||||
|
Timer().schedule(delay) {
|
||||||
|
if (serviceEvents.isNotEmpty())
|
||||||
|
serviceEvent.postValue(serviceEvents.removeFirst())
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
previousEvent = currentTime
|
||||||
|
serviceEvent.postValue(e)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("UnspecifiedImmutableFlag")
|
@SuppressLint("UnspecifiedImmutableFlag")
|
||||||
@@ -1456,8 +1473,8 @@ class BaresipService: Service() {
|
|||||||
val chatTexts: MutableMap<String, String> = mutableMapOf()
|
val chatTexts: MutableMap<String, String> = mutableMapOf()
|
||||||
val activities = mutableListOf<String>()
|
val activities = mutableListOf<String>()
|
||||||
var dnsServers = listOf<InetAddress>()
|
var dnsServers = listOf<InetAddress>()
|
||||||
|
|
||||||
var serviceEvent = MutableLiveData<Event<ServiceEvent>>()
|
var serviceEvent = MutableLiveData<Event<ServiceEvent>>()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
|||||||
Reference in New Issue
Block a user