Issue
Is it possible to get lifecycle of passed Application or Context?
I need to run background service using Coroutines but already I do simple while(true) which doesn't support lifecycle of my app.
this.applicationContext?.let {
CoroutineScope(Dispatchers.Default).launch {
while (true) {
val fetchedLocation = LocationProvider.getLocationOrNull(it)
fetchedLocation?.let { location = it }
delay(1.toDuration(DurationUnit.MINUTES))
}
}
}
Solution
lifecycleScope is an extension function on LifecycleOwner, it is defined like the following:
public val LifecycleOwner.lifecycleScope: LifecycleCoroutineScope
get() = lifecycle.coroutineScope
where lifecycle is an instance of Lifecycle.
Only Activities and Fragments implement LifecycleOwner, so the lifecycleScope instance can be retrieved only from Activities or Fragments.
You can create your own implementation of LifecycleOwner and retrieve an instance of lifecycleScope from it.
Answered By - Sergio
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.