/var/log/messages

Dec 20, 2015 - 2 minute read - Comments - android

kotlin-android-example

引き続き以下なリポジトリのソースを確認を。

以下なオブジェクトについて確認を。

    val mNameObservable: BehaviorSubject<String> = BehaviorSubject.create()
    val mUserObservable: BehaviorSubject<JsonObject> = BehaviorSubject.create()

まず、BehaviorSubject から。

BehaviorSubject

初期値を持つ Subject との事。onNext() が呼び出された時に値を通知しつつその値を cache という記述もありますね。というかコンストラクタではなくて create というメソド使ってるのだけれどこれは一体何なのか。

ええと、

  • Subject のイメージができていない

ということで確認してみます。

  • Subject は Observer で Observable

とのこと。やはり Observer と Observable のあたりのイメージができていないのですね。ということで以下を確認。

以下に控えを。

  • データソースを提供する Observable を作る (Observable.from とか Observable.just とか Observable.range とか)
  • Operator を使ってストリームの要素一つづつについて云々
  • Observer を使って Observable を subscribe
  • Observable の subscribe メソドに Oberver を渡す、のか
  • Observable を作って云々した後に subscribe しないと話が始まらない

んーと、例えば以下のコードで

        WidgetObservable.text(editText)
            .doOnNext { e: OnTextChangeEvent ->
                addFrientButton.setEnabled(false)
                loading.setVisibility(View.INVISIBLE)
            }
            .map { it.text().toString() }
            .filter { it.length() > 3 }
            .debounce(500, TimeUnit.MILLISECONDS)
            .subscribe {
                mNameObservable.onNext(it)
            }

の最後の subscribe に lambda が渡されているあたりなのか。本来ならここ、Oberver が渡されるべき? つうか何が略されて lambda になってるのかが分かっていないのがアレなのか。

時間切れ

このあたり、別途確認させて頂きます。

kotlin-android-example 那覇のアレゲな店

comments powered by Disqus