对于我的应用程序,我有核心类的基本实现,这些类实现了许多样板代码。 BaseActivity
和BaseViewModel
的两个这样的实现。 BaseViewModel
仅具有SingleLiveEvent<Boolean>
的getter和setter,它们可以由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中,并将其正确地应用于所有扩展类?