- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下 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 初始化它,但这不是这里的问题。我想动态设置它并触发我的观察者。
编辑:添加调用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>(...);
}
关于安卓实时数据 : MutableData is never on active state,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44664027/
我有以下 ViewModel: class SignInViewModel @Inject constructor(val api: BillingApi) : ViewModel() { v
我正在尝试使用 Firebase 数据库的 runTransaction() 但它不起作用。这是我正在使用的代码。 numQuestionRef.runTransaction(new Transact
我正在尝试使用 Firebase 数据库的 runTransaction() 但它不起作用。这是我正在使用的代码。 numQuestionRef.runTransaction(new Transact
编辑:23/10/2016:这没有解决,我仍在寻找答案。我将重写这个问题以使其更清楚,因为我现在知道是什么导致了这个问题。 编辑:2016 年 10 月 26 日:发现了一些东西: 在尝试查找问题时,
在 Swift 中,我理解 NSNumber 是包含标量数字的容器。 在 Firebase 中,您可以将 NSNumbers 发送到数据库,但不能发送 Ints。 我正在使用 Firebase Tra
我是一名优秀的程序员,十分优秀!