2017-07-14 16 views
0

私はそこにライブデータ変数を持つビューモデルを持っています。Kotlin、proguard、Androidアーキテクチャコンポーネント

私の活動は、UIを更新するためにそれを観察します。

デバッグでは、すべてうまく動作しています。私が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" 
+0

どのような依存関係のバージョンを使用していますか? – ianhanniballake

+0

@ianhanniballake編集された回答を参照してください。 kaptではなくannotationProcessorになる可能性がありますか? (ちょうどそれに気づいた) –

+0

ちょうど代わりにkaptを試して、どちらも動作しません –

答えて

1

適切なProGuard構成を取得するには、alpha4にアップグレードする必要があります。

alpha3は、適切なProGuard構成を含まない点でissueであった。 alpha4 release notesに従って、これは修正されました。

-1

私はあなたがオペレータObservable.intervalなくObservable.timer

あなたが発するを使用しているONLY ONCE指定した時間後に1を探していると思います。しかし、Observable.intervalは、指定された間隔ごとに連続して放射します。

+0

なぜ私のコードは、デバッグモードで動作しますか?私はその出来事を一度しか望んでいない。 –

関連する問題