观察 Mu​​tableLiveData 时出错

Error while observing MutableLiveData

我正在开发 MVVM 应用程序。我已经能够一起使用 AndroidViewModel、Activity 和 MutableLiveData,但我不知道为什么我对这个特定方法有问题。

例如,我有一个名为 "IssuesViewModel" 的 AndroidViewModel。它有一个 private MutableLiveData<Boolean> mutable; 和这两个方法:

// Retrofit 2 call
public void reportIssue(Data data){
    mutable = new MutableLiveData();
    retrofit.reportIssue(Data data, new RestCallback<Void>(){
        @Override
        public void success(Void success){
            mutable.setValue(true);
        }
        @Override
        public void failure(){
            mutable.setValue(false);
        }
    );
}

// Getting mutableLiveData
public MutableLiveData<Boolean> getMutable(){
    return mutable;
}

现在,在我的 "IssuesActivity" 中,即扩展 AppCompatActivity 和实现 LifecycleRegistryOwner,我有以下方法:

//... Activity callbacks and other methods ...
private IssuesViewModel viewModel;
@Override
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState)
    // Toolbar code and other stuff...
    viewModel = ViewModelProviders.of(this).get(IssuesViewModel.class);
    // More code ...
}

@Override
public LifecycleRegistry getLifecycle() {
    return new LifecycleRegistry(this);
}

// Triggered after button click
private void reportIssue(Data data){
    viewModel.reportIssue(data);
    viewModel.getMutable().observe(this, new Observer<Boolean>(){
        @Override
        public void onChanged(@Nullable Boolean response){
            if (response != null && response){
                //Success, update UI
            } else {
                //Error, update UI
            }
    }
}

我以前能够使用 mutableLiveData(使用自定义对象而不是布尔值)。我对之前的所有电话都做了同样的事情......我不知道为什么这不起作用。

谢谢!

编辑 1,11 月 21 日:

我认为问题在于我的 activity 扩展了 AppCompatActivity 并实现了 LifecycleRegistryOwner。我有一个 Activity,其代码与上述代码类似,一切正常,但 Activity 正在扩展 LifecycleActivity。当我更改此 activity、扩展 AppCompatActivity 和实施 LifecycleRegistryOwner 时,观察者的 onChange 永远不会触发 。我发现这个 bug 与我的问题有关,但我认为它只适用于 Fragments...

更新android.arch.lifecycle:extensions至稳定版1.0.0后,该问题已解决。现在,一切正常。