Kotlin,proguard,Android架构组件

我有一个在那里有一个实时数据变量的视图模型。

我的活动观察它,以更新用户界面。

在调试中,这一切都很好。 当启用proguard时,它不再观察livedata的变化。

我已检查实时数据是否正确更新。 但是,观察者回调从来没有被调用过。

有关如何配置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每隔指定的时间间隔连续发射。