ViewModel 观察扩展的 Activity

naj*_*ajm 5 java android mvvm viewmodel android-architecture-components

对于我的应用程序,我有核心类的基本实现,可以处理大部分样板代码。两个这样的实现是BaseActivityBaseViewModel。它BaseViewModel仅具有 getter 和 setter,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 */

}
Run Code Online (Sandbox Code Playgroud)

现在我还有其他活动(例如MainActivity)从 延伸而来BaseActivity。我假设既然MainActivity扩展了BaseActivity前面提到的生命周期观察者也会自动申请MainActivity。然而,事实并非如此。只有当我将观察者MainActivityBaseActivity

基本上,我要问的是如何将观察者逻辑保留在 BaseActivity 中并使其正确应用于所有扩展类?