ViewModel观察扩展的Activity

时间:2018-07-14 04:37:54

标签: java android mvvm viewmodel android-architecture-components

对于我的应用程序,我有核心类的基本实现,这些类实现了许多样板代码。 BaseActivityBaseViewModel的两个这样的实现。 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中,并将其正确地应用于所有扩展类?

0 个答案:

没有答案