Обычный класс в области действия, который действует как ViewModel - PullRequest
0 голосов
/ 21 января 2020

В Использование Dagger в вашем Android приложении CodeLab они используют обычный класс с областью действия, который действует как ViewModel, как, например,

@ActivityScope
class RegistrationViewModel @Inject constructor(val userManager: UserManager) {
    ...
}

Это делает инъекцию ViewModel Dagger очень просто, но не потеряем ли мы что-нибудь, если не будем наследовать компоненты архитектуры ViewModel класс?

1 Ответ

0 голосов
/ 23 января 2020

Как правило, кодовые лаборатории связаны с некоторыми топиками c, и они пытаются объяснить только эти топи c. Здесь это Кинжал, а не Компоненты Архитектуры. Да, вы можете потерять некоторые функциональные возможности, но если они все еще могут сделать свою точку зрения - это не важно

Кроме того, если они заставляют приложение работать только с простыми java объектами, это означает, что им не нужны дополнительные функции из ViewModel, они написали меньше кода, а значит, и лучше.

Я также хочу отметить, что объяснение, что "вы теряете ViewModel.onCleared", является "самой маленькой проблемой". Что является «главной особенностью» виртуальной машины, так это то, что вы можете совместно использовать один и тот же экземпляр в течение жизненного цикла одной и той же операции / фрагмента или что вы можете поделиться им между различными операциями / фрагментами.

И onCleared - это то, что следует использовать с осторожностью, поскольку в некоторых ситуациях вы пытаетесь очистить ссылку на то, что вам не следует хранить в первую очередь.

...