首页 > 解决方案 > ViewModel 观察扩展活动

问题描述

对于我的应用程序,我有处理大部分样板代码的核心类的基本实现。两个这样的实现是BaseActivityBaseViewModel。简单的BaseViewModel有 getter 和 setterSingleLiveEvent<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 中并使其正确应用于所有扩展类?

标签: javaandroidmvvmviewmodelandroid-architecture-components

解决方案


推荐阅读