Lukas Lechner
08/04/2020, 9:14 AMlifecycleScope
? IMO most (all?) coroutines should be started in viewModelScope
because then they continue to run on orientation changes.Desmond Teo
08/04/2020, 9:19 AMErik
08/04/2020, 9:19 AMlifecycleScope
Giorgos Neokleous
08/04/2020, 9:21 AMlifecycleScope
, it will act similarly to livedata. This with a combination of the launchWhenXXXX
extensionsflosch
08/04/2020, 9:32 AMsuspendCancellableCoroutine
and launch it in the lifecycleScope
suspend fun Fragment.suspendingPermissionRequest(
permission: String
): Boolean = suspendCancellableCoroutine<Boolean> { continuation ->
val requestPermission = registerForActivityResult(ActivityResultContracts.RequestPermission()) { result ->
continuation.resume(result)
}
requestPermission.launch(permission)
continuation.invokeOnCancellation { requestPermission.unregister() }
}
class SomeFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
viewLifecycleOwner.lifecycleScope.launch {
val granted = suspendingPermissionRequest(WRITE_EXTERNAL_STORAGE)
}
}
}
dekans
08/04/2020, 2:12 PMonPrepareMenu
)