Для моего приложения у меня есть базовые реализации основных классов, которые заботятся о большей части шаблонного кода. Две такие реализации - это 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 и правильно применить ее ко всем расширенным классам?




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