我有一个视图模型,其中有一个实时数据变量。Kotlin,proguard,Android的体系结构组件
我的活动观察它以更新UI。
在调试中,它一切正常。当启用proguard时,它不再观察livedata的变化。
我检查过实时数据是否正确更新。但是,观察者回调从未被调用。
任何有关如何配置Proguard和什么可能是错误的提示?
我试图让我的包中类没有成功:
-keep class com.example.myapp.** { *; }
这里是视图模型:
class SplashViewModelImpl : JapetViewModel(), SplashViewModel {
private val isTimeUp = MutableLiveData<Boolean>()
init {
isTimeUp.value = false
Observable.timer(2000L, TimeUnit.MILLISECONDS)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe { isTimeUp.postValue(true) }
}
override fun isTimeUp(): LiveData<Boolean> = isTimeUp
}
而且活动:
class SplashActivity : MyBaseActivity() {
lateinit var viewModel: SplashViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_splash)
viewModel = kodein.with(this).instance()
// Working in debug
// viewModel.isTimeUp().observe(this, Observer(this::transitionIfTimeUp))
// Working in debug too, tried this way of writing it too
viewModel.isTimeUp().observe(this, Observer<Boolean> { t -> transitionIfTimeUp(t) })
// Also tried doing it with an object : Observer... without success either
}
private fun transitionIfTimeUp(isTimeUp: Boolean?) {
if (isTimeUp == null || !isTimeUp) return
startActivity<LoginActivity>()
finish()
}
}
编辑:依赖
testCompile "android.arch.persistence.room:testing:1.0.0-alpha3"
androidTestCompile "android.arch.persistence.room:testing:1.0.0-alpha3"
compile "android.arch.lifecycle:extensions:1.0.0-alpha3"
compile "android.arch.lifecycle:reactivestreams:1.0.0-alpha3"
kapt "android.arch.lifecycle:compiler:1.0.0-alpha3"
compile "android.arch.persistence.room:runtime:1.0.0-alpha3"
compile "android.arch.persistence.room:rxjava2:1.0.0-alpha3"
kapt "android.arch.persistence.room:compiler:1.0.0-alpha3"
你使用的是什么依赖版本? – ianhanniballake
@ianhanniballake查看编辑答案。任何可能是annotationProcessor而不是kapt的机会? (刚才注意到了) –
刚试过用kapt代替,也不能用 –