簡體   English   中英

Kotlin,proguard,Android體系結構組件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM