我有以下内容ViewModel
:
class SignInViewModel @Inject constructor(val api: BillingApi) : ViewModel() {
val googleApiClient: MutableLiveData<GoogleApiClient> = MutableLiveData()
}
在我的Activity.onCreate(onSavedInstanceState: Bundle?)
我有:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
...
signInViewModel = ViewModelProviders.of(this)
.get(SignInViewModel::class.java)
signInViewModel.googleApiClient.observe(this, Observer<GoogleApiClient?> {
... // here never gets trigged
}
稍后在我的代码中我有signInViewModel.googleApiClient.value = it
. 此时(在单击按钮后发生,因此我处于恢复状态)我希望LiveData
触发我的观察者,但它没有。
在调试时,我注意到我MutableLiveData
的从未处于active
状态。
我究竟做错了什么?拜托,我知道我GoogleApiClient
在示例中使用了一个实例,并且应该使用带有 automanage 之类的 Activity 对其进行初始化,但这不是这里的问题。我想动态设置它并触发我的观察者。
编辑:添加调用 setValue 的代码
signInViewModel.someMethod(this)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(Consumer {
// This gets called but the observe callback does **not**
signInViewModel.googleApiClient.value = it
}, errorCallback)