Android LiveData:MutableData从不处于活动状态
我有以下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
实例,它应该使用GoogleApiClient
和GoogleApiClient
进行初始化,但这不是问题。 我想动态地设置它,让我的观察者被触发。
编辑 :添加调用setValue的代码
signInViewModel.someMethod(this) .observeOn(AndroidSchedulers.mainThread()) .subscribe(Consumer { // This gets called but the observe callback does **not** signInViewModel.googleApiClient.value = it }, errorCallback)
- Kotlin + Dagger2 @模块提供者方法用法中的注释
- FragmentManager在Kotlin中抛出IllegalArgumentException
- Kotlin View setEnabled函数缺失?
- Android Studio转换为Kotlin:在某些情况下使用@JvmStatic
- Android Studio执行失败的任务compilefreeDebugKotlin
原来minifyEnabled
是真的。 我还没有看到任何有关架构组件的proguard规则。
发现这个问题尚未解决,但有需要的配置,使其通过:
-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>(...); }
- 从Java调用Kotlin高阶函数
- Android Studio 3.0 Canary 1:引用Kotlin类的Kotlin测试或Java测试失败
- 在运行时添加片段与Kotlin原因“不幸的应用程序已停止”
- kotlin翻新 – 背景粘性并发标记扫描GC释放65326(1448KB)AllocSpace对象,62(1736KB)LOS对象,
- 在Kotlin Andorid的ViewHolder中的getActivity()/上下文
- 在Kotlin中可串行化
- 无法在Android Studio 2.0中安装或卸载任何插件
- Firebase-firestore不能使用两个文档
- 用fillafter(true)|查看 kotlin | Android