Android LiveData:MutableData 永远不会处于活动状态

Android LiveData: MutableData is never on active state

我有以下 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 实例,它应该使用 Activity 和 automanage 等等进行初始化,但这不是这里的问题。我想动态设置它并触发我的观察者。

编辑:添加调用setValue

的代码
signInViewModel.someMethod(this)
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(Consumer {
                // This gets called but the observe callback does **not**
                signInViewModel.googleApiClient.value = it
            }, errorCallback)

事实证明 minifyEnabled 是真的。我还没有看到任何关于架构组件的 proguard 规则。

发现这个 issue 尚未解决,但具有使其通过所需的配置:

-keepclassmembers class * implements android.arch.lifecycle.LifecycleObserver {
    <init>(...);
}
-keepclassmembers class * extends android.arch.lifecycle.ViewModel {
    <init>(...);
}
-keepclassmembers class android.arch.lifecycle.Lifecycle$State { *; }
-keepclassmembers class android.arch.lifecycle.Lifecycle$Event { *; }
-keepclassmembers class * {
    @android.arch.lifecycle.OnLifecycleEvent *;
}

-keep class * implements android.arch.lifecycle.LifecycleObserver {
    <init>(...);
}