[英]Android Architecture Components - ViewModel Observable & Proguard
[英]Kotlin, proguard, Android Architecture Components
我有一个带有实时数据变量的视图模型。
我的活动会观察它以便更新UI。
在调试中,一切正常。 当我启用proguard时,它将不再观察实时数据更改。
我已经检查了实时数据是否正确更新。 但是,从未调用观察者回调。
关于如何配置Proguard的任何提示以及可能出了什么问题?
我试图保持我的包裹的类没有成功:
-keep class com.example.myapp.** { *; }
这是ViewModel:
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"
您必须升级到alpha4
才能获得适当的ProGuard配置。
alpha3
一个问题是它不包含适当的ProGuard配置。 根据alpha4发行说明 ,此问题已修复。
我猜您正在寻找运算符Observable.interval
而不是Observable.timer
在指定的时间后,您使用的那个仅发射一次。 但是, Observable.interval
每个指定的时间间隔连续发射。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.