Slide 1

Slide 1 text

AutoDispose shaunkawano

Slide 2

Slide 2 text

https://github.com/uber/AutoDispose#autodispose AutoDispose • From Uber Technologies • “RxJava 2 tool for automatically binding the execution of RxJava 2 streams to a provided scope“ • Architecturally better version of RxLifecycle

Slide 3

Slide 3 text

Handling Streams • CompositeDisposable • RxLifecycle • No Reactive Extensions

Slide 4

Slide 4 text

Handling Streams • CompositeDisposable • RxLifecycle • No Reactive Extensions

Slide 5

Slide 5 text

CompositeDisposable private val disposables = CompositeDisposable() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) ... myObservable.doStuff() .subscribeBy { ... } .addTo(disposables) } override fun onDestroy() { disposables.dispose() super.onDestroy() }

Slide 6

Slide 6 text

CompositeDisposable private val disposables = CompositeDisposable() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) ... myObservable.doStuff() .subscribeBy { ... } .addTo(disposables) } override fun onDestroy() { disposables.dispose() super.onDestroy() }

Slide 7

Slide 7 text

CompositeDisposable private val disposables = CompositeDisposable() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) ... myObservable.doStuff() .subscribeBy { ... } .addTo(disposables) } override fun onDestroy() { disposables.dispose() super.onDestroy() }

Slide 8

Slide 8 text

CompositeDisposable private val disposables = CompositeDisposable() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) ... myObservable.doStuff() .subscribeBy { ... } .addTo(disposables) } override fun onDestroy() { disposables.dispose() super.onDestroy() }

Slide 9

Slide 9 text

RxLifecycle override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) ... myObservable .bindToLifecycle(this, DESTROY) .subscribe { } }

Slide 10

Slide 10 text

RxLifecycle override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) ... myObservable .bindToLifecycle(this, DESTROY) .subscribe { } }

Slide 11

Slide 11 text

UnSubscription https://github.com/trello/RxLifecycle#unsubscription

Slide 12

Slide 12 text

UnSubscription https://github.com/trello/RxLifecycle#unsubscription

Slide 13

Slide 13 text

http://blog.danlew.net/2017/08/02/why-not-rxlifecycle

Slide 14

Slide 14 text

http://blog.danlew.net/2017/08/02/why-not-rxlifecycle

Slide 15

Slide 15 text

https://github.com/uber/AutoDispose#autodispose AutoDispose implementation 'com.uber.autodispose:autodispose:x.y.z' // Java myObservable .doStuff() .as(autoDisposable(this)) // The magic .subscribe(s -> ...);

Slide 16

Slide 16 text

AutoDispose autodispose-android com.uber.autodispose:

Slide 17

Slide 17 text

AutoDispose autodispose-android com.uber.autodispose: autodispose-android-archcomponents

Slide 18

Slide 18 text

AutoDispose autodispose-android com.uber.autodispose: autodispose-android-archcomponents autodispose-rxlifecycle

Slide 19

Slide 19 text

AutoDispose Kotlin autodispose-android-kotlin com.uber.autodispose: autodispose-android-archcomponents-kotlin

Slide 20

Slide 20 text

AutoDispose Kotlin autodispose-android-kotlin com.uber.autodispose: autodispose-android-archcomponents-kotlin

Slide 21

Slide 21 text

LifecycleOwner

Slide 22

Slide 22 text

Extension Functions @CheckReturnValue inline fun LifecycleOwner.scope(): LifecycleScopeProvider<*> = AndroidLifecycleScopeProvider.from(this) @CheckReturnValue inline fun LifecycleOwner.scope(untilEvent: Lifecycle.Event): LifecycleScopeProvider<*> = AndroidLifecycleScopeProvider.from(this, untilEvent) // autodispose-android-archcomponents-kotlin

Slide 23

Slide 23 text

AutoDispose with Arch Lifecycle protected val scope: LifecycleScopeProvider by lazy { AndroidLifecycleScopeProvider.from(this) // or scope() }) … store.myState.autoDisposable(scope).subscribeBy(onNext = { … }) // Activity.kt

Slide 24

Slide 24 text

AutoDispose with Arch Lifecycle protected val scope: LifecycleScopeProvider by lazy { AndroidLifecycleScopeProvider.from(this) // or scope() }) … store.myState.autoDisposable(scope).subscribeBy(onNext = { … }) // Activity.kt

Slide 25

Slide 25 text

AutoDispose shaunkawano Thank you!