ViewModel замечает расширенную активность

Для моего приложения у меня есть базовые реализации основных классов, которые заботятся о большей части шаблонного кода. Две такие реализации - это BaseActivity и BaseViewModel. BaseViewModel просто имеет геттеры и сеттеры для SingleLiveEvent<Boolean>, к которым обращается BaseActivity:

BaseActivity:

public class BaseActivity extends AppCompatActivity {

/* Some random variables */

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    BaseViewModel viewModel = ViewModelProviders.of(this).get(BaseViewModel.class);

    // Observe loading state
    viewModel.getLoadingEvents().observe(this, showLoading -> {
        if (showLoading != null) {
            showLoadingState(showLoading);
        }
    });

    // Observer error events
    viewModel.getErrorEvents().observe(this, throwable -> {
        if (throwable != null) {
            Alerts.displayError(this, throwable.getLocalizedMessage());
        }
    });
}

/* Some random methods */

}

Теперь у меня есть другие виды деятельности (например, MainActivity), которые продолжаются от BaseActivity. Я бы предположил, что, поскольку MainActivity расширяет BaseActivity, вышеупомянутый наблюдатель жизненного цикла автоматически подаст заявку и на MainActivity. Однако это случай нет. Они работают, только если я перенесу наблюдателей на MainActivity из BaseActivity.

По сути, я спрашиваю как я могу сохранить логику наблюдателя в BaseActivity и правильно применить ее ко всем расширенным классам?

Я тоже ищу ответ, пожалуйста, дайте мне знать, когда найдете его.

Prinkal Kumar 10.11.2020 07:58
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
4
1
428
0

Другие вопросы по теме