際際滷

際際滷Share a Scribd company logo
舒从亳亠从仂亠 亳仗仂仍亰仂于舒仆亳亠 RxJava 2 于
Android
亳仆仂亞舒亟仆亶 于亞亠仆亳亶
Android Developer
舒从 仗仂仍亠亟仂于舒亠仍仆仂 于仗仂仍仆亳 2 亠仗亳?
丕仍仂于亳亠:
舒仗亳仄亠,  仆舒 亠 Single 亟仍 仗仂仍亠仆亳 仗亳从舒 从仂仄仄亠仆舒亳亠于 亳 Single 亟仍 仗弍仍亳从舒亳亳
从仂仄仄亠仆舒亳. 亠仂弍仂亟亳仄仂 仂弍亠仗亠亳 仂仗舒于从 从仂仄仄亠仆舒亳 仗仂仍亠 亰舒亞亰从亳 仗亳从舒.
舒从 仗仂仍亠亟仂于舒亠仍仆仂 于仗仂仍仆亳 2 亠仗亳?
丕仍仂于亳亠:
舒仗亳仄亠,  仆舒 亠 Single 亟仍 仗仂仍亠仆亳 仗亳从舒 从仂仄仄亠仆舒亳亠于 亳 Single 亟仍 仗弍仍亳从舒亳亳
从仂仄仄亠仆舒亳. 亠仂弍仂亟亳仄仂 仂弍亠仗亠亳 仂仗舒于从 从仂仄仄亠仆舒亳 仗仂仍亠 亰舒亞亰从亳 仗亳从舒.
Single.fromCallable { dataRepository.loadComments() }
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe()
舒从 仗仂仍亠亟仂于舒亠仍仆仂 于仗仂仍仆亳 2 亠仗亳?
丕仍仂于亳亠:
舒仗亳仄亠,  仆舒 亠 Single 亟仍 仗仂仍亠仆亳 仗亳从舒 从仂仄仄亠仆舒亳亠于 亳 Single 亟仍 仗弍仍亳从舒亳亳
从仂仄仄亠仆舒亳. 亠仂弍仂亟亳仄仂 仂弍亠仗亠亳 仂仗舒于从 从仂仄仄亠仆舒亳 仗仂仍亠 亰舒亞亰从亳 仗亳从舒.
Single.fromCallable { dataRepository.addComment() }
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe()
舒从 仗仂仍亠亟仂于舒亠仍仆仂 于仗仂仍仆亳 2 亠仗亳?
亠亠仆亳亠:
仗仂仍亰仂于舒 Semaphore 亳亰 java.util.concurrent.
val semaphore = Semaphore(1)
Single.fromCallable { dataRepository.loadComments() }
.doOnSubscribe { semaphore.acquire() }
.subscribeOn(Schedulers.io())
.doFinally { semaphore.release() }
.observeOn(AndroidSchedulers.mainThread())
.subscribe()
舒从 仗仂仍亠亟仂于舒亠仍仆仂 于仗仂仍仆亳 2 亠仗亳?
亠亠仆亳亠:
仗仂仍亰仂于舒 Semaphore 亳亰 java.util.concurrent.
val semaphore = Semaphore(1)
Single.fromCallable { dataRepository.addComment() }
.doOnSubscribe { semaphore.acquire() }
.subscribeOn(Schedulers.io())
.doFinally { semaphore.release() }
.observeOn(AndroidSchedulers.mainThread())
.subscribe()
舒从 仗仂仍亠亟仂于舒亠仍仆仂 于仗仂仍仆亳 2 亠仗亳?
舒从亳亠 于仂亰仄仂亢仆仂亳 仗亠亟仂舒于仍磳 仆舒仄 舒从仂亶 仗仂亟仂亟?
 仂仂从仂弍亠亰仂仗舒仆仂 亟仍 亠仗亳.
舒从 仗仂仍亠亟仂于舒亠仍仆仂 于仗仂仍仆亳 2 亠仗亳?
舒从亳亠 于仂亰仄仂亢仆仂亳 仗亠亟仂舒于仍磳 仆舒仄 舒从仂亶 仗仂亟仂亟?
 仂仂从仂弍亠亰仂仗舒仆仂 亟仍 亠仗亳.
 仂仂从仂弍亠亰仂仗舒仆仂 亟仍 仂亟亠仍仆仂亞仂 舒从舒 亠仗亳.
舒从 仗仂仍亠亟仂于舒亠仍仆仂 于仗仂仍仆亳 2 亠仗亳?
舒从亳亠 于仂亰仄仂亢仆仂亳 仗亠亟仂舒于仍磳 仆舒仄 舒从仂亶 仗仂亟仂亟?
 仂仂从仂弍亠亰仂仗舒仆仂 亟仍 亠仗亳.
 仂仂从仂弍亠亰仂仗舒仆仂 亟仍 仂亟亠仍仆仂亞仂 舒从舒 亠仗亳.
 仂亰仄仂亢仆仂 亰舒仗从舒 仂亟仆仂于亠仄亠仆仆仂 仂仗亠亟亠仍亠仆仆仂亠 从仂仍亳亠于仂 亠仗亠亶.
舒从 仗仂仍亠亟仂于舒亠仍仆仂 于仗仂仍仆亳 2 亠仗亳?
舒从亳亠 于仂亰仄仂亢仆仂亳 仗亠亟仂舒于仍磳 仆舒仄 舒从仂亶 仗仂亟仂亟?
 仂仂从仂弍亠亰仂仗舒仆仂 亟仍 亠仗亳.
 仂仂从仂弍亠亰仂仗舒仆仂 亟仍 仂亟亠仍仆仂亞仂 舒从舒 亠仗亳.
 仂亰仄仂亢仆仂 亰舒仗从舒 仂亟仆仂于亠仄亠仆仆仂 仂仗亠亟亠仍亠仆仆仂亠 从仂仍亳亠于仂 亠仗亠亶.
 亠 仆亠仂弍仂亟亳仄仂亳 仂弍亠亟亳仆 于亠 亠仗亳 于 仂亟仆.
舒从 仗仂仍亠亟仂于舒亠仍仆仂 于仗仂仍仆亳 2 亠仗亳?
弍舒弍舒于舒亠仄 仂亳弍从亳 从舒亳于仂
丕仍仂于亳亠:
亠仂弍仂亟亳仄仂 于仗仂仍仆亳 亰舒仗仂 仆舒 亠于亠 亳:
 亳 仂于亳亳 仆亠仆亠-仂亠亟亳仆亠仆亳 舒亰 于亟舒 仂亳弍从.
弍舒弍舒于舒亠仄 仂亳弍从亳 从舒亳于仂
丕仍仂于亳亠:
亠仂弍仂亟亳仄仂 于仗仂仍仆亳 亰舒仗仂 仆舒 亠于亠 亳:
 亳 仂于亳亳 仆亠仆亠-仂亠亟亳仆亠仆亳 舒亰 于亟舒 仂亳弍从.
 亳 于仂亰仆亳从仆仂于亠仆亳亳 仂亳弍从亳 仗仂于仂亳 亰舒仗仂  亰舒亟亠亢从仂亶 于 5 亠从仆亟, 仆亠 弍仂仍亠 3 舒亰.
弍舒弍舒于舒亠仄 仂亳弍从亳 从舒亳于仂
丕仍仂于亳亠:
亠仂弍仂亟亳仄仂 于仗仂仍仆亳 亰舒仗仂 仆舒 亠于亠 亳:
 亳 仂于亳亳 仆亠仆亠-仂亠亟亳仆亠仆亳 舒亰 于亟舒 仂亳弍从.
 亳 于仂亰仆亳从仆仂于亠仆亳亳 仂亳弍从亳 仗仂于仂亳 亰舒仗仂  亰舒亟亠亢从仂亶 于 5 亠从仆亟, 仆亠 弍仂仍亠 3 舒亰.
 舒仍仂亢亳 仂亞舒仆亳亠仆亳亠 于 1 仄亳仆 仆舒 于仗仂仍仆亠仆亳亠 于亠亶 仂仗亠舒亳亳.
弍舒弍舒于舒亠仄 仂亳弍从亳 从舒亳于仂
丕仍仂于亳亠:
亠仂弍仂亟亳仄仂 于仗仂仍仆亳 亰舒仗仂 仆舒 亠于亠 亳:
 亳 仂于亳亳 仆亠仆亠-仂亠亟亳仆亠仆亳 舒亰 于亟舒 仂亳弍从.
 亳 于仂亰仆亳从仆仂于亠仆亳亳 仂亳弍从亳 仗仂于仂亳 亰舒仗仂  亰舒亟亠亢从仂亶 于 5 亠从仆亟, 仆亠 弍仂仍亠 3 舒亰.
 舒仍仂亢亳 仂亞舒仆亳亠仆亳亠 于 1 仄亳仆 仆舒 于仗仂仍仆亠仆亳亠 于亠亶 仂仗亠舒亳亳.
dataRepository.requestDataFromNetwork()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe()
弍舒弍舒于舒亠仄 仂亳弍从亳 从舒亳于仂
亠亠仆亳亠:
dataRepository.requestDataFromNetwork()

.retryWhen { throwableObservable -> throwableObservable
.flatMap {
if (it is IOException) {
Observable.error(it)
} else {
Observable.just(it)
}
}
}

弍舒弍舒于舒亠仄 仂亳弍从亳 从舒亳于仂
亠亠仆亳亠:
dataRepository.requestDataFromNetwork()

.retryWhen { throwableObservable -> throwableObservable
.flatMap {
if (it is IOException || attemptsCount.getAndIncrement() == 3) {
Observable.error(it)
} else {
Observable.just(it)
}
}
}

弍舒弍舒于舒亠仄 仂亳弍从亳 从舒亳于仂
亠亠仆亳亠:
dataRepository.requestDataFromNetwork()

.retryWhen { throwableObservable -> throwableObservable
.flatMap {
if (it is IOException || attemptsCount.getAndIncrement() == 3) {
Observable.error(it)
} else {
Observable.just(it)
}
}
.delay(5, TimeUnit.SECONDS)
}

弍舒弍舒于舒亠仄 仂亳弍从亳 从舒亳于仂
亠亠仆亳亠:
dataRepository.requestDataFromNetwork()

.retryWhen { throwableObservable -> throwableObservable
.flatMap {
if (it is IOException || attemptsCount.getAndIncrement() == 3) {
Observable.error(it)
} else {
Observable.just(it)
}
}
.delay(5, TimeUnit.SECONDS)
}
.timeout(1, TimeUnit.MINUTES)

弍舒弍舒于舒亠仄 仂亳弍从亳 从舒亳于仂
class ErrorTransformer<T> constructor(val maxAttempts) : ObservableTransformer<T, T> {

override fun apply(upstream: Observable<T>) = upstream
.retryWhen { throwableObservable -> throwableObservable
.flatMap {
if (it is IOException || attemptsCount.getAndIncrement() == maxAttemptsCount) {
Observable.error(it)
} else {
Observable.just(it)
}
}
.delay(delay, TimeUnit.MILLISECONDS)
}
.timeout(timeout, TimeUnit.MILLISECONDS)
}
弍舒弍舒于舒亠仄 仂亳弍从亳 从舒亳于仂
class ErrorTransformer<T> constructor(val maxAttempts) : ObservableTransformer<T, T> {

override fun apply(upstream: Observable<T>) = upstream
.retryWhen { throwableObservable -> throwableObservable
.flatMap {
Crashlytics.logException(it)
if (it is IOException || attemptsCount.getAndIncrement() == maxAttemptsCount) {
Observable.error(it)
} else {
Observable.just(it)
}
}
.delay(delay, TimeUnit.MILLISECONDS)
}
.timeout(timeout, TimeUnit.MILLISECONDS)
}
弍舒弍舒于舒亠仄 仂亳弍从亳 从舒亳于仂
仗仂仍亰仂于舒仆亳亠:
val DELAY = TimeUnit.SECONDS.toMillis(5)
val TIMEOUT = TimeUnit.MINUTES.toMillis(1)
val ATTEMPTS_COUNT = 3
dataRepository.requestDataFromNetwork()
.subscribeOn(Schedulers.io())
.compose(ErrorTransformer(TIMEOUT, DELAY, ATTEMPTS_COUNT))
.observeOn(AndroidSchedulers.mainThread())
.subscribe()
弍舒弍舒于舒亠仄 仂亳弍从亳 从舒亳于仂
仗仂仍亰仂于舒仆亳亠:
val DELAY = TimeUnit.SECONDS.toMillis(5)
val TIMEOUT = TimeUnit.MINUTES.toMillis(1)
val ATTEMPTS_COUNT = 3
dataRepository.requestDataFromNetwork()
.subscribeOn(Schedulers.io())
.compose(ErrorTransformer(TIMEOUT, DELAY, ATTEMPTS_COUNT))
.observeOn(AndroidSchedulers.mainThread())
.subscribe()

RxJavaPlugins.setErrorHandler { e ->  }
弍舒弍舒于舒亠仄 仂亳弍从亳 从舒亳于仂
亳仄亠 亳仗仂仍亰仂于舒仆亳 Subject
丕仍仂于亳亠:
亠仂弍仂亟亳仄仂 仂仍亠亢亳于舒 仗仂亟从仍ム亠仆亳亠 亳 仂从仍ム亠仆亳亠 仆亠仆亠-仂亠亟亳仆亠仆亳 亟仍 于仗仂仍仆亠仆亳
亰舒仗仂仂于 仆舒 亠于亠.
亳仄亠 亳仗仂仍亰仂于舒仆亳 Subject
PublishSubject
val source = PublishSubject.create<Int>()
// 仂仍亳 1, 2, 3, 4 亳 onComplete
source.subscribe(getFirstObserver())
source.onNext(1)
source.onNext(2)
source.onNext(3)
// 仂仍亳 4 亳 onComplete 亟仍 仍亠亟ム亠亞仂 仆舒弍仍ミ莞委亠仍 仂亢亠
source.subscribe(getSecondObserver());
source.onNext(4)
source.onComplete()
亳仄亠 亳仗仂仍亰仂于舒仆亳 Subject
RelplaySubject
val source = ReplaySubject.create<Int>()
// 仆 仗仂仍亳 1, 2, 3, 4
source.subscribe(getFirstObserver())
source.onNext(1)
source.onNext(2)
source.onNext(3)
source.onNext(4)
source.onComplete()
// 仆 舒从亢亠 仗仂仍亳 1, 2, 3, 4 舒从 从舒从 仂仆 亳仗仂仍亰亠 Replay Subject
source.subscribe(getSecondObserver())
亳仄亠 亳仗仂仍亰仂于舒仆亳 Subject
BehaviorSubject
val source = BehaviorSubject.create<Int>()
// 仂仍亳 1, 2, 3, 4 and onComplete
source.subscribe(getFirstObserver())
source.onNext(1)
source.onNext(2)
source.onNext(3)
// 仂仍亳 3(仗仂仍亠亟仆亳亶 仍亠仄亠仆) 亳 4(仗仂仍亠亟ム亳亠 仍亠仄亠仆) 亳 onComplete
source.subscribe(getSecondObserver())
source.onNext(4)
source.onComplete()
亳仄亠 亳仗仂仍亰仂于舒仆亳 Subject
AsyncSubject
val source = AsyncSubject.create<Int>()
// 仂仍亳 仂仍从仂 4 亳 onComplete
source.subscribe(getFirstObserver())
source.onNext(1)
source.onNext(2)
source.onNext(3)
// 丐仂亢亠 仗仂仍亳 仂仍从仂 4 亳 onComplete
source.subscribe(getSecondObserver())
source.onNext(4)
source.onComplete()
亳仄亠 亳仗仂仍亰仂于舒仆亳 Subject
亠亠仆亳亠:
class ConnectivityReceiver(val connectivitySubject: PublishSubject<Boolean> {
override fun onReceive(context: Context, arg1: Intent) {
connectivitySubject.onNext(isConnected())
}
private fun isConnected(): Boolean {
val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE)
val activeNetwork = connectivityManager.activeNetworkInfo
return activeNetwork != null && activeNetwork.isConnected
}
}
亳仄亠 亳仗仂仍亰仂于舒仆亳 Subject
亠亠仆亳亠:

override fun onStart() {
registerReceiver(connectivityReceiver,
IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION))
super.onStart()
}
override fun onStop() {
unregisterReceiver(connectivityReceiver)
super.onStop()
}

亳仄亠 亳仗仂仍亰仂于舒仆亳 Subject
亞亳亠 仗亳仄亠 亳仗仂仍亰仂于舒仆亳:
 于仂仄舒亳亠从仂亠 仂仍亠亢亳于舒仆亳亠 仗仂仄仂亠仆仆 仍亠仄亠仆仂于 仗亳从舒.
 弍舒弍仂从舒 仆舒亢舒亳亶 (从仍亳从仂于) 仆舒 仍亠仄亠仆 仗亳从舒.
 仂弍舒亢亠仆亳亠 仂亳弍仂从.
 弍仆仂于仍亠仆亳亠 仍亠仄亠仆仂于.
 亳 仄仆仂亞仂亠 亟亞仂亠.
亳仄亠 亳仗仂仍亰仂于舒仆亳 Subject
仆亳仄亳仂于舒仆亳亠 View
丕仍仂于亳亠:
亠仂弍仂亟亳仄仂 亠舒仍亳亰仂于舒 仗仂仍亠亟仂于舒亠仍仆仂亠 仗仂磦仍亠仆亳亠 仆亠从仂仍从亳 View.
仆亳仄亳仂于舒仆亳亠 View
丕仍仂于亳亠:
亠仂弍仂亟亳仄仂 亠舒仍亳亰仂于舒 仗仂仍亠亟仂于舒亠仍仆仂亠 仗仂磦仍亠仆亳亠 仆亠从仂仍从亳 View.
仆亳仄亳仂于舒仆亳亠 View
亠亠仆亳亠:
亟亠仄 亳仗仂仍亰仂于舒 ViewPropertyAnimator.
ViewCompat.animate(view)
.setDuration(duration)
.alpha(1f)
仆亳仄亳仂于舒仆亳亠 View
亠亠仆亳亠:
fun fadeIn(view: View, duration: Long) = Completable.create {
ViewCompat.animate(view)
.setDuration(duration)
.alpha(1f)
.withEndAction {
it.onComplete()
}
}
仆亳仄亳仂于舒仆亳亠 View
仗仂仍亰仂于舒仆亳亠:
val durationMs = 1000L
fadeIn(button1, durationMs)
.andThen(fadeIn(button2, durationMs))
.andThen(fadeIn(button3, durationMs))
.andThen(fadeIn(button4, durationMs))
.subscribe()
仆亳仄亳仂于舒仆亳亠 View
丕仍仂于亳亠:
亠仂弍仂亟亳仄仂 亠舒仍亳亰仂于舒 仂亟仆仂于亠仄亠仆仆仂亠 仗仂磦仍亠仆亳亠 仆亠从仂仍从亳 View, 仆仂 仗仂亟仂仍亢亳亠仍仆仂
舒仆亳仄舒亳亳 仂亟仆仂亶 亳亰 仆亳 亟仂仍亢仆舒 弍 仆舒 1 亠从仆亟 弍仂仍亠.
仆亳仄亳仂于舒仆亳亠 View
丕仍仂于亳亠:
亠仂弍仂亟亳仄仂 亠舒仍亳亰仂于舒 仂亟仆仂于亠仄亠仆仆仂亠 仗仂磦仍亠仆亳亠 仆亠从仂仍从亳 View, 仆仂 仗仂亟仂仍亢亳亠仍仆仂
舒仆亳仄舒亳亳 仂亟仆仂亶 亳亰 仆亳 亟仂仍亢仆舒 弍 仆舒 1 亠从仆亟 弍仂仍亠.
仆亳仄亳仂于舒仆亳亠 View
仂仍亠亠 从舒亳于仂亠 亠亠仆亳亠:
fun View.fadeIn(duration: Long = 1000L) = Completable.create {
ViewCompat.animate(this)
.setDuration(duration)
.alpha(1f)
.withEndAction {
it.onComplete()
}
}
仆亳仄亳仂于舒仆亳亠 View
仗仂仍亰仂于舒仆亳亠:
button1.fadeIn()
.mergeWith(button2.fadeIn(2000))
.mergeWith(button3.fadeIn())
.mergeWith(button4.fadeIn())
.subscribe()
仆亳仄亳仂于舒仆亳亠 View
亠舒从亳于仆亶 仗仂亳从
丕仍仂于亳亠:
亠仂弍仂亟亳仄仂 亠舒仍亳亰仂于舒 仗仂亳从 亳 仗亳 亳亰仄亠仆亠仆亳亳 仂从亳 亰舒仗舒亳于舒 亟舒仆仆亠  亠于亠舒.
仂仍亢仆 仂弍仍ミ莞委 仍仂于亳:
 舒仆仆亠  亠于亠舒 亟仂仍亢仆 亰舒仗舒亳于舒 仆亠 舒亠, 亠仄 1 舒亰 于 500 仄亳仍仍亳亠从仆亟.
亠舒从亳于仆亶 仗仂亳从
丕仍仂于亳亠:
亠仂弍仂亟亳仄仂 亠舒仍亳亰仂于舒 仗仂亳从 亳 仗亳 亳亰仄亠仆亠仆亳亳 仂从亳 亰舒仗舒亳于舒 亟舒仆仆亠  亠于亠舒.
仂仍亢仆 仂弍仍ミ莞委 仍仂于亳:
 舒仆仆亠  亠于亠舒 亟仂仍亢仆 亰舒仗舒亳于舒 仆亠 舒亠, 亠仄 1 舒亰 于 500 仄亳仍仍亳亠从仆亟.
 亠 仂从亳 亟仂仍亢仆 亳亞仆仂亳仂于舒.
亠舒从亳于仆亶 仗仂亳从
丕仍仂于亳亠:
亠仂弍仂亟亳仄仂 亠舒仍亳亰仂于舒 仗仂亳从 亳 仗亳 亳亰仄亠仆亠仆亳亳 仂从亳 亰舒仗舒亳于舒 亟舒仆仆亠  亠于亠舒.
仂仍亢仆 仂弍仍ミ莞委 仍仂于亳:
 舒仆仆亠  亠于亠舒 亟仂仍亢仆 亰舒仗舒亳于舒 仆亠 舒亠, 亠仄 1 舒亰 于 500 仄亳仍仍亳亠从仆亟.
 亠 仂从亳 亟仂仍亢仆 亳亞仆仂亳仂于舒.
 仍亳 仂从舒 弍仍舒 仂亠亟舒从亳仂于舒仆舒, 仆仂 亠亠 仂亟亠亢亳仄仂亠 仂舒仍仂 仗亠亢仆亳仄, 仂 亰舒仗仂
仂仗舒于仍 仆亠 亟仂仍亢亠仆.
亠舒从亳于仆亶 仗仂亳从
丕仍仂于亳亠:
亠仂弍仂亟亳仄仂 亠舒仍亳亰仂于舒 仗仂亳从 亳 仗亳 亳亰仄亠仆亠仆亳亳 仂从亳 亰舒仗舒亳于舒 亟舒仆仆亠  亠于亠舒.
仂仍亢仆 仂弍仍ミ莞委 仍仂于亳:
 舒仆仆亠  亠于亠舒 亟仂仍亢仆 亰舒仗舒亳于舒 仆亠 舒亠, 亠仄 1 舒亰 于 500 仄亳仍仍亳亠从仆亟.
 亠 仂从亳 亟仂仍亢仆 亳亞仆仂亳仂于舒.
 仍亳 仂从舒 弍仍舒 仂亠亟舒从亳仂于舒仆舒, 仆仂 亠亠 仂亟亠亢亳仄仂亠 仂舒仍仂 仗亠亢仆亳仄, 仂 亰舒仗仂
仂仗舒于仍 仆亠 亟仂仍亢亠仆.
 仂仍亢亠仆 仂仄亠仆 仗仂仍亠亟仆亳亶 亰舒仗仂, 亠仍亳 仂从舒 亳亰仄亠仆亳仍舒.
亠舒从亳于仆亶 仗仂亳从
亠亠仆亳亠:
editText.textChanges()
.subscribe()
亠舒从亳于仆亶 仗仂亳从
亠亠仆亳亠:
editText.textChanges()
.delay(500, TimeUnit.MILLISECONDS)
.subscribe()
亠舒从亳于仆亶 仗仂亳从
亠亠仆亳亠:
editText.textChanges()
.delay(500, TimeUnit.MILLISECONDS)
.filter { !it.isEmpty() }
.subscribe()
亠舒从亳于仆亶 仗仂亳从
亠亠仆亳亠:
editText.textChanges()
.delay(500, TimeUnit.MILLISECONDS)
.filter { !it.isEmpty() }
.map { it.toString() }
.distinctUntilChanged()
.subscribe()
亠舒从亳于仆亶 仗仂亳从
亠亠仆亳亠:
editText.textChanges()
.delay(500, TimeUnit.MILLISECONDS)
.filter { !it.isEmpty() }
.map { it.toString() }
.distinctUntilChanged()
.switchMap { dataRepository.getResultsByQuery(it) }
.subscribe()
亠舒从亳于仆亶 仗仂亳从
亠亠仆亳亠:
editText.textChanges()
.debounce(500, TimeUnit.MILLISECONDS) // 仂仍亠亠 从仂亠从仆仂亠 亳仗仂仍亰仂于舒仆亳亠
.filter { !it.isEmpty() }
.map { it.toString() }
.distinctUntilChanged()
.switchMap { dataRepository.getResultsByQuery(it) }
.subscribe()
亠舒从亳于仆亶 仗仂亳从
亳仂于舒仆亳亠 亟舒仆仆
丕仍仂于亳亠:
亠仂弍仂亟亳仄仂 仂亞舒仆亳亰仂于舒 从亳仂于舒仆亳亠 亟舒仆仆 于 仗舒仄亳, 仆舒 亟亳从亠 亳 仗亳 仂于亳亳 亟舒仆仆
亰舒仗仂亳 亳  亠于亠舒.
亳仂于舒仆亳亠 亟舒仆仆
丕仍仂于亳亠:
亠仂弍仂亟亳仄仂 仂亞舒仆亳亰仂于舒 从亳仂于舒仆亳亠 亟舒仆仆 于 仗舒仄亳, 仆舒 亟亳从亠 亳 仗亳 仂于亳亳 亟舒仆仆
亰舒仗仂亳 亳  亠于亠舒.
亳仂于舒仆亳亠 亟舒仆仆
亠亠仆亳亠:

fun getDataFromMemory() = memoryDataSource.getData()
fun getDataFromDisk() = diskDataSource.getData().doOnNext { data ->
memoryDataSource.cacheInMemory(data)
}
fun getDataFromNetwork() = networkDataSource.getData().doOnNext { data ->
diskDataSource.saveToDisk(data)
memoryDataSource.cacheInMemory(data)
}

亳仂于舒仆亳亠 亟舒仆仆
仗仂仍亰仂于舒仆亳亠:
val memory = dataSource.getDataFromMemory()
val disk = dataSource.getDataFromDisk()
val network = dataSource.getDataFromNetwork()
Observable.concat<Data>(memory, disk, network)
.subscribeOn(Schedulers.io())
.firstElement()
.toObservable()
.observeOn(AndroidSchedulers.mainThread())
.subscribe()
亳仂于舒仆亳亠 亟舒仆仆
弌仗舒亳弍仂 亰舒 于仆亳仄舒仆亳亠!

More Related Content

What's hot (20)

Spring the ripper
Spring the ripperSpring the ripper
Spring the ripper
Evgeny Borisov
Multithreading in java past and actual
Multithreading in java past and actualMultithreading in java past and actual
Multithreading in java past and actual
Yevgen Levik
亳亠从舒. 仂仗仆仂 仗仂亞舒仄仄仆 亳亠仄.
亳亠从舒. 仂仗仆仂 仗仂亞舒仄仄仆 亳亠仄.亳亠从舒. 仂仗仆仂 仗仂亞舒仄仄仆 亳亠仄.
亳亠从舒. 仂仗仆仂 仗仂亞舒仄仄仆 亳亠仄.
Dima Dzuba
Java 仂亠仆 2014 亰舒仆亳亠 3
Java 仂亠仆 2014 亰舒仆亳亠 3Java 仂亠仆 2014 亰舒仆亳亠 3
Java 仂亠仆 2014 亰舒仆亳亠 3
Technopark
Java 仂亠仆 2014 亰舒仆亳亠 5
Java 仂亠仆 2014 亰舒仆亳亠 5Java 仂亠仆 2014 亰舒仆亳亠 5
Java 仂亠仆 2014 亰舒仆亳亠 5
Technopark
Java 8. Thread pools
Java 8. Thread poolsJava 8. Thread pools
Java 8. Thread pools
Nakraynikov Oleg
RDSDataSource: 丼亳亠 亠 仆舒 Swift
RDSDataSource: 丼亳亠 亠 仆舒 SwiftRDSDataSource: 丼亳亠 亠 仆舒 Swift
RDSDataSource: 丼亳亠 亠 仆舒 Swift
RAMBLER&Co
Java 9: what is there beyond modularization
Java 9: what is there beyond modularizationJava 9: what is there beyond modularization
Java 9: what is there beyond modularization
Ivan Krylov
Spring Boot Test horror
Spring Boot Test horrorSpring Boot Test horror
Spring Boot Test horror
亳亳仍仍 丐仂仍从舒于
, 弌亠亳 亅, 亠从亳 4
, 弌亠亳 亅, 亠从亳 4, 弌亠亳 亅, 亠从亳 4
, 弌亠亳 亅, 亠从亳 4
Dima Dzuba
Android: 舒从 仆舒仗亳舒 仗亳仍仂亢亠仆亳亠, 从仂仂仂亠 仆亠 仂仄仂亰亳
Android: 舒从  仆舒仗亳舒 仗亳仍仂亢亠仆亳亠, 从仂仂仂亠 仆亠 仂仄仂亰亳Android: 舒从  仆舒仗亳舒 仗亳仍仂亢亠仆亳亠, 从仂仂仂亠 仆亠 仂仄仂亰亳
Android: 舒从 仆舒仗亳舒 仗亳仍仂亢亠仆亳亠, 从仂仂仂亠 仆亠 仂仄仂亰亳
Elena Kotina
亠仄亳亶 舒亳仆 "弍仂 仍亠亞仂 舒仆亳仍亳舒 于 Android (c仗仂亶仍亠: Realm)"
亠仄亳亶 舒亳仆 "弍仂 仍亠亞仂 舒仆亳仍亳舒 于 Android (c仗仂亶仍亠: Realm)"亠仄亳亶 舒亳仆 "弍仂 仍亠亞仂 舒仆亳仍亳舒 于 Android (c仗仂亶仍亠: Realm)"
亠仄亳亶 舒亳仆 "弍仂 仍亠亞仂 舒仆亳仍亳舒 于 Android (c仗仂亶仍亠: Realm)"
IT Event
Curse of spring boot test [VRN]
Curse of spring boot test [VRN]Curse of spring boot test [VRN]
Curse of spring boot test [VRN]
亳亳仍仍 丐仂仍从舒于
Curse of spring boot test
Curse of spring boot testCurse of spring boot test
Curse of spring boot test
亳亳仍仍 丐仂仍从舒于
Java threads - part 3
Java threads - part 3Java threads - part 3
Java threads - part 3
Nakraynikov Oleg
Java threads - part 2
Java threads - part 2Java threads - part 2
Java threads - part 2
Nakraynikov Oleg
Java threads - part 1
Java threads - part 1Java threads - part 1
Java threads - part 1
Nakraynikov Oleg
仍亠从舒仆亟 弌亠于 "舒亰亟亠仍磺 亳 于仍舒于亶: CQRS 于 iOS"
仍亠从舒仆亟 弌亠于 "舒亰亟亠仍磺 亳 于仍舒于亶: CQRS 于 iOS"仍亠从舒仆亟 弌亠于 "舒亰亟亠仍磺 亳 于仍舒于亶: CQRS 于 iOS"
仍亠从舒仆亟 弌亠于 "舒亰亟亠仍磺 亳 于仍舒于亶: CQRS 于 iOS"
IT Event
Stream API: 亠从仂仄亠仆亟舒亳亳 仍亳 仂弍舒从仂于仂亟仂于
Stream API: 亠从仂仄亠仆亟舒亳亳 仍亳 仂弍舒从仂于仂亟仂于Stream API: 亠从仂仄亠仆亟舒亳亳 仍亳 仂弍舒从仂于仂亟仂于
Stream API: 亠从仂仄亠仆亟舒亳亳 仍亳 仂弍舒从仂于仂亟仂于
tvaleev
Multithreading in java past and actual
Multithreading in java past and actualMultithreading in java past and actual
Multithreading in java past and actual
Yevgen Levik
亳亠从舒. 仂仗仆仂 仗仂亞舒仄仄仆 亳亠仄.
亳亠从舒. 仂仗仆仂 仗仂亞舒仄仄仆 亳亠仄.亳亠从舒. 仂仗仆仂 仗仂亞舒仄仄仆 亳亠仄.
亳亠从舒. 仂仗仆仂 仗仂亞舒仄仄仆 亳亠仄.
Dima Dzuba
Java 仂亠仆 2014 亰舒仆亳亠 3
Java 仂亠仆 2014 亰舒仆亳亠 3Java 仂亠仆 2014 亰舒仆亳亠 3
Java 仂亠仆 2014 亰舒仆亳亠 3
Technopark
Java 仂亠仆 2014 亰舒仆亳亠 5
Java 仂亠仆 2014 亰舒仆亳亠 5Java 仂亠仆 2014 亰舒仆亳亠 5
Java 仂亠仆 2014 亰舒仆亳亠 5
Technopark
RDSDataSource: 丼亳亠 亠 仆舒 Swift
RDSDataSource: 丼亳亠 亠 仆舒 SwiftRDSDataSource: 丼亳亠 亠 仆舒 Swift
RDSDataSource: 丼亳亠 亠 仆舒 Swift
RAMBLER&Co
Java 9: what is there beyond modularization
Java 9: what is there beyond modularizationJava 9: what is there beyond modularization
Java 9: what is there beyond modularization
Ivan Krylov
, 弌亠亳 亅, 亠从亳 4
, 弌亠亳 亅, 亠从亳 4, 弌亠亳 亅, 亠从亳 4
, 弌亠亳 亅, 亠从亳 4
Dima Dzuba
Android: 舒从 仆舒仗亳舒 仗亳仍仂亢亠仆亳亠, 从仂仂仂亠 仆亠 仂仄仂亰亳
Android: 舒从  仆舒仗亳舒 仗亳仍仂亢亠仆亳亠, 从仂仂仂亠 仆亠 仂仄仂亰亳Android: 舒从  仆舒仗亳舒 仗亳仍仂亢亠仆亳亠, 从仂仂仂亠 仆亠 仂仄仂亰亳
Android: 舒从 仆舒仗亳舒 仗亳仍仂亢亠仆亳亠, 从仂仂仂亠 仆亠 仂仄仂亰亳
Elena Kotina
亠仄亳亶 舒亳仆 "弍仂 仍亠亞仂 舒仆亳仍亳舒 于 Android (c仗仂亶仍亠: Realm)"
亠仄亳亶 舒亳仆 "弍仂 仍亠亞仂 舒仆亳仍亳舒 于 Android (c仗仂亶仍亠: Realm)"亠仄亳亶 舒亳仆 "弍仂 仍亠亞仂 舒仆亳仍亳舒 于 Android (c仗仂亶仍亠: Realm)"
亠仄亳亶 舒亳仆 "弍仂 仍亠亞仂 舒仆亳仍亳舒 于 Android (c仗仂亶仍亠: Realm)"
IT Event
仍亠从舒仆亟 弌亠于 "舒亰亟亠仍磺 亳 于仍舒于亶: CQRS 于 iOS"
仍亠从舒仆亟 弌亠于 "舒亰亟亠仍磺 亳 于仍舒于亶: CQRS 于 iOS"仍亠从舒仆亟 弌亠于 "舒亰亟亠仍磺 亳 于仍舒于亶: CQRS 于 iOS"
仍亠从舒仆亟 弌亠于 "舒亰亟亠仍磺 亳 于仍舒于亶: CQRS 于 iOS"
IT Event
Stream API: 亠从仂仄亠仆亟舒亳亳 仍亳 仂弍舒从仂于仂亟仂于
Stream API: 亠从仂仄亠仆亟舒亳亳 仍亳 仂弍舒从仂于仂亟仂于Stream API: 亠从仂仄亠仆亟舒亳亳 仍亳 仂弍舒从仂于仂亟仂于
Stream API: 亠从仂仄亠仆亟舒亳亳 仍亳 仂弍舒从仂于仂亟仂于
tvaleev

Similar to Practical usage of RxJava 2 (20)

RDSDataSource: Promises
RDSDataSource: PromisesRDSDataSource: Promises
RDSDataSource: Promises
RAMBLER&Co
亳舒亳仍 舒于亟仂于: JavaScript. 亳仆仂仆仆仂
亳舒亳仍 舒于亟仂于: JavaScript. 亳仆仂仆仆仂亳舒亳仍 舒于亟仂于: JavaScript. 亳仆仂仆仆仂
亳舒亳仍 舒于亟仂于: JavaScript. 亳仆仂仆仆仂
Yandex
仂仍仆亶 亳从仍 亠亳仂于舒仆亳 React-仗亳仍仂亢亠仆亳亶, 仍亠从亠亶 仆亟仂仂于 亳 舒舒仍 弌
仂仍仆亶 亳从仍 亠亳仂于舒仆亳 React-仗亳仍仂亢亠仆亳亶, 仍亠从亠亶 仆亟仂仂于 亳 舒舒仍 弌仂仍仆亶 亳从仍 亠亳仂于舒仆亳 React-仗亳仍仂亢亠仆亳亶, 仍亠从亠亶 仆亟仂仂于 亳 舒舒仍 弌
仂仍仆亶 亳从仍 亠亳仂于舒仆亳 React-仗亳仍仂亢亠仆亳亶, 仍亠从亠亶 仆亟仂仂于 亳 舒舒仍 弌
Mail.ru Group
React 仂 从仂仂 于亠舒: 仆亠 仂于亠仄 仂弍仆亶 亠于亠仆亶 亠仆亟亠亳仆亞
React 仂 从仂仂 于亠舒: 仆亠 仂于亠仄 仂弍仆亶 亠于亠仆亶 亠仆亟亠亳仆亞React 仂 从仂仂 于亠舒: 仆亠 仂于亠仄 仂弍仆亶 亠于亠仆亶 亠仆亟亠亳仆亞
React 仂 从仂仂 于亠舒: 仆亠 仂于亠仄 仂弍仆亶 亠于亠仆亶 亠仆亟亠亳仆亞
Timophy Chaptykov
Alexander Dymo - Barcamp 2009 - Faster Higher Sql
Alexander Dymo - Barcamp 2009 - Faster Higher SqlAlexander Dymo - Barcamp 2009 - Faster Higher Sql
Alexander Dymo - Barcamp 2009 - Faster Higher Sql
Alexander Dymo
Adymo Barcamp Presentation Faster Higher Sql
Adymo Barcamp Presentation Faster Higher SqlAdymo Barcamp Presentation Faster Higher Sql
Adymo Barcamp Presentation Faster Higher Sql
Oleksandr Petrov
Luxoft async.net
Luxoft async.netLuxoft async.net
Luxoft async.net
Sergey Teplyakov
舒从亳亠从仂亠 仗亳仄亠仆亠仆亳亠 HTML5 于 亊.仂亠
舒从亳亠从仂亠 仗亳仄亠仆亠仆亳亠 HTML5 于 亊.仂亠舒从亳亠从仂亠 仗亳仄亠仆亠仆亳亠 HTML5 于 亊.仂亠
舒从亳亠从仂亠 仗亳仄亠仆亠仆亳亠 HTML5 于 亊.仂亠
Alexey Androsov
弌亠亞亠亶 丿舒仄弍亳, 亟舒仗舒亳 Promise/A+ 亟仍 于亰舒亳仄仂亟亠亶于亳 仄亠亢亟 C++ 亳 Javascript
弌亠亞亠亶 丿舒仄弍亳, 亟舒仗舒亳 Promise/A+ 亟仍 于亰舒亳仄仂亟亠亶于亳 仄亠亢亟 C++ 亳 Javascript弌亠亞亠亶 丿舒仄弍亳, 亟舒仗舒亳 Promise/A+ 亟仍 于亰舒亳仄仂亟亠亶于亳 仄亠亢亟 C++ 亳 Javascript
弌亠亞亠亶 丿舒仄弍亳, 亟舒仗舒亳 Promise/A+ 亟仍 于亰舒亳仄仂亟亠亶于亳 仄亠亢亟 C++ 亳 Javascript
Sergey Platonov
舒舒仍 丼亳仆舒, Mail.Ru Group, 束舒从 仂亰亟舒 从仂仄舒仆亟 仗仂 舒于仂仄舒亳亰舒亳亳 亠亳...
舒舒仍 丼亳仆舒, Mail.Ru Group, 束舒从 仂亰亟舒 从仂仄舒仆亟 仗仂 舒于仂仄舒亳亰舒亳亳 亠亳...舒舒仍 丼亳仆舒, Mail.Ru Group, 束舒从 仂亰亟舒 从仂仄舒仆亟 仗仂 舒于仂仄舒亳亰舒亳亳 亠亳...
舒舒仍 丼亳仆舒, Mail.Ru Group, 束舒从 仂亰亟舒 从仂仄舒仆亟 仗仂 舒于仂仄舒亳亰舒亳亳 亠亳...
Mail.ru Group
舒从 仆舒于亠亳 仗仂磲仂从 于 从仂亟亠 于舒亠亞仂 web-仗亳仍仂亢亠仆亳, 仆亟亠亶 丼亠弍从亳仆
舒从 仆舒于亠亳 仗仂磲仂从 于 从仂亟亠 于舒亠亞仂 web-仗亳仍仂亢亠仆亳, 仆亟亠亶 丼亠弍从亳仆 舒从 仆舒于亠亳 仗仂磲仂从 于 从仂亟亠 于舒亠亞仂 web-仗亳仍仂亢亠仆亳, 仆亟亠亶 丼亠弍从亳仆
舒从 仆舒于亠亳 仗仂磲仂从 于 从仂亟亠 于舒亠亞仂 web-仗亳仍仂亢亠仆亳, 仆亟亠亶 丼亠弍从亳仆
Sigma Software
仍亠从亠亶 仆亟仂仂于 "亊仆亟亠从.仂舒: 舒亳亠从舒 仂仆亠仆亟舒 从舒从 仂仆舒 亠"
仍亠从亠亶 仆亟仂仂于 "亊仆亟亠从.仂舒: 舒亳亠从舒 仂仆亠仆亟舒 从舒从 仂仆舒 亠"仍亠从亠亶 仆亟仂仂于 "亊仆亟亠从.仂舒: 舒亳亠从舒 仂仆亠仆亟舒 从舒从 仂仆舒 亠"
仍亠从亠亶 仆亟仂仂于 "亊仆亟亠从.仂舒: 舒亳亠从舒 仂仆亠仆亟舒 从舒从 仂仆舒 亠"
Yandex
Java 仂亠仆 2013 仍亠从亳 6
Java 仂亠仆 2013 仍亠从亳 6Java 仂亠仆 2013 仍亠从亳 6
Java 仂亠仆 2013 仍亠从亳 6
Technopark
C仂亰亟舒仆亳亠 仗亳仍仂亢亠仆亳亶 仂 亰仆舒仆亳亠仄 Perl
C仂亰亟舒仆亳亠 仗亳仍仂亢亠仆亳亶 仂 亰仆舒仆亳亠仄 PerlC仂亰亟舒仆亳亠 仗亳仍仂亢亠仆亳亶 仂 亰仆舒仆亳亠仄 Perl
C仂亰亟舒仆亳亠 仗亳仍仂亢亠仆亳亶 仂 亰仆舒仆亳亠仄 Perl
Anatoly Sharifulin
仍舒亟 弌亠仍亳于亠仂于 亠弍-亠于亠 Phantom
仍舒亟 弌亠仍亳于亠仂于  亠弍-亠于亠 Phantom  仍舒亟 弌亠仍亳于亠仂于  亠弍-亠于亠 Phantom
仍舒亟 弌亠仍亳于亠仂于 亠弍-亠于亠 Phantom
Media Gorod
仆仂亞仂仗仂仂仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 C#, 仗亠于亠 亰舒仄亠从亳
仆仂亞仂仗仂仂仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 C#, 仗亠于亠 亰舒仄亠从亳仆仂亞仂仗仂仂仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 C#, 仗亠于亠 亰舒仄亠从亳
仆仂亞仂仗仂仂仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 C#, 仗亠于亠 亰舒仄亠从亳
DotNetConf
亞舒 于亳舒仍亳亰舒亳
亞舒 于亳舒仍亳亰舒亳亞舒 于亳舒仍亳亰舒亳
亞舒 于亳舒仍亳亰舒亳
Yandex
ZFConf 2011: 仂ミ黍 亰舒 亠: 仂于亠仆亳亠 仗仂亳亰于仂亟亳亠仍仆仂亳 Zend Framework 仗...
ZFConf 2011: 仂ミ黍 亰舒 亠: 仂于亠仆亳亠 仗仂亳亰于仂亟亳亠仍仆仂亳 Zend Framework 仗...ZFConf 2011: 仂ミ黍 亰舒 亠: 仂于亠仆亳亠 仗仂亳亰于仂亟亳亠仍仆仂亳 Zend Framework 仗...
ZFConf 2011: 仂ミ黍 亰舒 亠: 仂于亠仆亳亠 仗仂亳亰于仂亟亳亠仍仆仂亳 Zend Framework 仗...
ZFConf Conference
Web 仂亠仆 2013 仍亠从亳 9
Web 仂亠仆 2013 仍亠从亳 9Web 仂亠仆 2013 仍亠从亳 9
Web 仂亠仆 2013 仍亠从亳 9
Technopark
RDSDataSource: Promises
RDSDataSource: PromisesRDSDataSource: Promises
RDSDataSource: Promises
RAMBLER&Co
亳舒亳仍 舒于亟仂于: JavaScript. 亳仆仂仆仆仂
亳舒亳仍 舒于亟仂于: JavaScript. 亳仆仂仆仆仂亳舒亳仍 舒于亟仂于: JavaScript. 亳仆仂仆仆仂
亳舒亳仍 舒于亟仂于: JavaScript. 亳仆仂仆仆仂
Yandex
仂仍仆亶 亳从仍 亠亳仂于舒仆亳 React-仗亳仍仂亢亠仆亳亶, 仍亠从亠亶 仆亟仂仂于 亳 舒舒仍 弌
仂仍仆亶 亳从仍 亠亳仂于舒仆亳 React-仗亳仍仂亢亠仆亳亶, 仍亠从亠亶 仆亟仂仂于 亳 舒舒仍 弌仂仍仆亶 亳从仍 亠亳仂于舒仆亳 React-仗亳仍仂亢亠仆亳亶, 仍亠从亠亶 仆亟仂仂于 亳 舒舒仍 弌
仂仍仆亶 亳从仍 亠亳仂于舒仆亳 React-仗亳仍仂亢亠仆亳亶, 仍亠从亠亶 仆亟仂仂于 亳 舒舒仍 弌
Mail.ru Group
React 仂 从仂仂 于亠舒: 仆亠 仂于亠仄 仂弍仆亶 亠于亠仆亶 亠仆亟亠亳仆亞
React 仂 从仂仂 于亠舒: 仆亠 仂于亠仄 仂弍仆亶 亠于亠仆亶 亠仆亟亠亳仆亞React 仂 从仂仂 于亠舒: 仆亠 仂于亠仄 仂弍仆亶 亠于亠仆亶 亠仆亟亠亳仆亞
React 仂 从仂仂 于亠舒: 仆亠 仂于亠仄 仂弍仆亶 亠于亠仆亶 亠仆亟亠亳仆亞
Timophy Chaptykov
Alexander Dymo - Barcamp 2009 - Faster Higher Sql
Alexander Dymo - Barcamp 2009 - Faster Higher SqlAlexander Dymo - Barcamp 2009 - Faster Higher Sql
Alexander Dymo - Barcamp 2009 - Faster Higher Sql
Alexander Dymo
Adymo Barcamp Presentation Faster Higher Sql
Adymo Barcamp Presentation Faster Higher SqlAdymo Barcamp Presentation Faster Higher Sql
Adymo Barcamp Presentation Faster Higher Sql
Oleksandr Petrov
舒从亳亠从仂亠 仗亳仄亠仆亠仆亳亠 HTML5 于 亊.仂亠
舒从亳亠从仂亠 仗亳仄亠仆亠仆亳亠 HTML5 于 亊.仂亠舒从亳亠从仂亠 仗亳仄亠仆亠仆亳亠 HTML5 于 亊.仂亠
舒从亳亠从仂亠 仗亳仄亠仆亠仆亳亠 HTML5 于 亊.仂亠
Alexey Androsov
弌亠亞亠亶 丿舒仄弍亳, 亟舒仗舒亳 Promise/A+ 亟仍 于亰舒亳仄仂亟亠亶于亳 仄亠亢亟 C++ 亳 Javascript
弌亠亞亠亶 丿舒仄弍亳, 亟舒仗舒亳 Promise/A+ 亟仍 于亰舒亳仄仂亟亠亶于亳 仄亠亢亟 C++ 亳 Javascript弌亠亞亠亶 丿舒仄弍亳, 亟舒仗舒亳 Promise/A+ 亟仍 于亰舒亳仄仂亟亠亶于亳 仄亠亢亟 C++ 亳 Javascript
弌亠亞亠亶 丿舒仄弍亳, 亟舒仗舒亳 Promise/A+ 亟仍 于亰舒亳仄仂亟亠亶于亳 仄亠亢亟 C++ 亳 Javascript
Sergey Platonov
舒舒仍 丼亳仆舒, Mail.Ru Group, 束舒从 仂亰亟舒 从仂仄舒仆亟 仗仂 舒于仂仄舒亳亰舒亳亳 亠亳...
舒舒仍 丼亳仆舒, Mail.Ru Group, 束舒从 仂亰亟舒 从仂仄舒仆亟 仗仂 舒于仂仄舒亳亰舒亳亳 亠亳...舒舒仍 丼亳仆舒, Mail.Ru Group, 束舒从 仂亰亟舒 从仂仄舒仆亟 仗仂 舒于仂仄舒亳亰舒亳亳 亠亳...
舒舒仍 丼亳仆舒, Mail.Ru Group, 束舒从 仂亰亟舒 从仂仄舒仆亟 仗仂 舒于仂仄舒亳亰舒亳亳 亠亳...
Mail.ru Group
舒从 仆舒于亠亳 仗仂磲仂从 于 从仂亟亠 于舒亠亞仂 web-仗亳仍仂亢亠仆亳, 仆亟亠亶 丼亠弍从亳仆
舒从 仆舒于亠亳 仗仂磲仂从 于 从仂亟亠 于舒亠亞仂 web-仗亳仍仂亢亠仆亳, 仆亟亠亶 丼亠弍从亳仆 舒从 仆舒于亠亳 仗仂磲仂从 于 从仂亟亠 于舒亠亞仂 web-仗亳仍仂亢亠仆亳, 仆亟亠亶 丼亠弍从亳仆
舒从 仆舒于亠亳 仗仂磲仂从 于 从仂亟亠 于舒亠亞仂 web-仗亳仍仂亢亠仆亳, 仆亟亠亶 丼亠弍从亳仆
Sigma Software
仍亠从亠亶 仆亟仂仂于 "亊仆亟亠从.仂舒: 舒亳亠从舒 仂仆亠仆亟舒 从舒从 仂仆舒 亠"
仍亠从亠亶 仆亟仂仂于 "亊仆亟亠从.仂舒: 舒亳亠从舒 仂仆亠仆亟舒 从舒从 仂仆舒 亠"仍亠从亠亶 仆亟仂仂于 "亊仆亟亠从.仂舒: 舒亳亠从舒 仂仆亠仆亟舒 从舒从 仂仆舒 亠"
仍亠从亠亶 仆亟仂仂于 "亊仆亟亠从.仂舒: 舒亳亠从舒 仂仆亠仆亟舒 从舒从 仂仆舒 亠"
Yandex
Java 仂亠仆 2013 仍亠从亳 6
Java 仂亠仆 2013 仍亠从亳 6Java 仂亠仆 2013 仍亠从亳 6
Java 仂亠仆 2013 仍亠从亳 6
Technopark
C仂亰亟舒仆亳亠 仗亳仍仂亢亠仆亳亶 仂 亰仆舒仆亳亠仄 Perl
C仂亰亟舒仆亳亠 仗亳仍仂亢亠仆亳亶 仂 亰仆舒仆亳亠仄 PerlC仂亰亟舒仆亳亠 仗亳仍仂亢亠仆亳亶 仂 亰仆舒仆亳亠仄 Perl
C仂亰亟舒仆亳亠 仗亳仍仂亢亠仆亳亶 仂 亰仆舒仆亳亠仄 Perl
Anatoly Sharifulin
仍舒亟 弌亠仍亳于亠仂于 亠弍-亠于亠 Phantom
仍舒亟 弌亠仍亳于亠仂于  亠弍-亠于亠 Phantom  仍舒亟 弌亠仍亳于亠仂于  亠弍-亠于亠 Phantom
仍舒亟 弌亠仍亳于亠仂于 亠弍-亠于亠 Phantom
Media Gorod
仆仂亞仂仗仂仂仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 C#, 仗亠于亠 亰舒仄亠从亳
仆仂亞仂仗仂仂仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 C#, 仗亠于亠 亰舒仄亠从亳仆仂亞仂仗仂仂仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 C#, 仗亠于亠 亰舒仄亠从亳
仆仂亞仂仗仂仂仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 C#, 仗亠于亠 亰舒仄亠从亳
DotNetConf
亞舒 于亳舒仍亳亰舒亳
亞舒 于亳舒仍亳亰舒亳亞舒 于亳舒仍亳亰舒亳
亞舒 于亳舒仍亳亰舒亳
Yandex
ZFConf 2011: 仂ミ黍 亰舒 亠: 仂于亠仆亳亠 仗仂亳亰于仂亟亳亠仍仆仂亳 Zend Framework 仗...
ZFConf 2011: 仂ミ黍 亰舒 亠: 仂于亠仆亳亠 仗仂亳亰于仂亟亳亠仍仆仂亳 Zend Framework 仗...ZFConf 2011: 仂ミ黍 亰舒 亠: 仂于亠仆亳亠 仗仂亳亰于仂亟亳亠仍仆仂亳 Zend Framework 仗...
ZFConf 2011: 仂ミ黍 亰舒 亠: 仂于亠仆亳亠 仗仂亳亰于仂亟亳亠仍仆仂亳 Zend Framework 仗...
ZFConf Conference
Web 仂亠仆 2013 仍亠从亳 9
Web 仂亠仆 2013 仍亠从亳 9Web 仂亠仆 2013 仍亠从亳 9
Web 仂亠仆 2013 仍亠从亳 9
Technopark

Practical usage of RxJava 2