I'm not clear on when and why we need to use lifecycleScope.launch {}
I understand that this doesn't block the UI thread, but if you are doing UI work shouldn't you be doing it on the UIThread?
What about callbacks that are called everytime the UI is launch
Would you need to use this in a fragment's onViewCreated? Or what about an Activities onResume?
lifecycleScope is a coroutine scope that's used in activities and fragments (you should use viewLifecycleOwner.lifecycleScope for fragments), every coroutine launched by lifecycleScope will be stopped when onDestroy() is called.