title: Implementing CoroutineScope in ViewModel
body: <p>Why and when do we actually need to implement <code>CoroutineScope</code> in a <code>ViewModel</code>. Inside ViewModel you can use <code>viewModelScope</code> when you want to tied your Coroutine to the ViewModel thus when <code>onCleared</code> gets called all running coroutines will be cancelled automatically. When you implement <code>CoroutineScope</code> you can directly call <code>launch</code>, what scope does it use? I am guessing it uses the one provided at <code>override val coroutineContext: CoroutineContext</code>. Does implementing <code>CoroutineScope</code> in a ViewModel means you want to handle the cancellation of coroutine by yourself?</p>