// Activity scope
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// ViewModel привязан к жизненному циклу Activity
val viewModel by viewModels<MyViewModel>()
}
}
// ViewModel scope
class MyViewModel : ViewModel() {
private val scope = viewModelScope // CoroutineScope, отменяемый при очистке ViewModel
fun fetchData() {
scope.launch {
// Работает пока жив ViewModel
}
}
}
// Компонентный scope (Dagger/Hilt)
@ActivityScoped // Живёт пока живёт Activity
class MyActivityComponent @Inject constructor()
@FragmentScoped // Живёт пока живёт Fragment
class MyFragmentComponent @Inject constructor()