Skip to content

Commit 0d55103

Browse files
committed
Added SubscribeOnLifecycle
1 parent e1c3dca commit 0d55103

File tree

5 files changed

+67
-102
lines changed

5 files changed

+67
-102
lines changed

.idea/misc.xml

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

common/src/main/java/me/li2/android/common/rx/ObservableExt.kt

Lines changed: 0 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,10 @@
55
@file:Suppress("unused")
66
package me.li2.android.common.rx
77

8-
import androidx.lifecycle.Lifecycle
9-
import androidx.lifecycle.LifecycleObserver
10-
import androidx.lifecycle.OnLifecycleEvent
118
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
129
import io.reactivex.rxjava3.core.Completable
13-
import io.reactivex.rxjava3.core.Flowable
1410
import io.reactivex.rxjava3.core.Observable
1511
import io.reactivex.rxjava3.core.Single
16-
import io.reactivex.rxjava3.disposables.Disposable
1712
import io.reactivex.rxjava3.schedulers.Schedulers
1813
import java.util.concurrent.TimeUnit
1914

@@ -38,42 +33,3 @@ fun <T> Single<T>.forUi(): Single<T> =
3833
fun Completable.forUi(): Completable =
3934
this.observeOn(AndroidSchedulers.mainThread())
4035
.subscribeOn(Schedulers.io())
41-
42-
/**
43-
* Subscribe on lifecycle onStart and dispose on lifecycle onStop.
44-
*/
45-
fun <T> Observable<T>.subscribeOnLifecycle(lifecycle: Lifecycle, block: (T) -> Unit) {
46-
val lifecycleObserver: LifecycleObserver = object : LifecycleObserver {
47-
private var subscription: Disposable? = null
48-
49-
@OnLifecycleEvent(Lifecycle.Event.ON_START)
50-
fun onStart() {
51-
subscription = subscribe(block)
52-
}
53-
54-
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
55-
fun onStop() {
56-
subscription?.dispose()
57-
}
58-
}
59-
60-
lifecycle.addObserver(lifecycleObserver)
61-
}
62-
63-
fun <T> Flowable<T>.subscribeOnLifecycle(lifecycle: Lifecycle, block: (T) -> Unit) {
64-
val lifecycleObserver: LifecycleObserver = object : LifecycleObserver {
65-
private var subscription: Disposable? = null
66-
67-
@OnLifecycleEvent(Lifecycle.Event.ON_START)
68-
fun onStart() {
69-
subscription = subscribe(block)
70-
}
71-
72-
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
73-
fun onStop() {
74-
subscription?.dispose()
75-
}
76-
}
77-
78-
lifecycle.addObserver(lifecycleObserver)
79-
}

common/src/main/java/me/li2/android/common/rx/RxBluetooth.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import android.bluetooth.BluetoothAdapter.*
1111
import android.content.Context
1212
import androidx.fragment.app.FragmentActivity
1313
import io.reactivex.rxjava3.core.Observable
14+
import me.li2.android.common.framework.onBroadcast
1415
import me.li2.android.common.logic.orFalse
1516

1617
/**

common/src/main/java/me/li2/android/common/rx/RxBroadcast.kt

Lines changed: 0 additions & 58 deletions
This file was deleted.
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package me.li2.android.common.rx
2+
3+
import androidx.lifecycle.Lifecycle
4+
import androidx.lifecycle.LifecycleObserver
5+
import androidx.lifecycle.OnLifecycleEvent
6+
import io.reactivex.rxjava3.core.Flowable
7+
import io.reactivex.rxjava3.core.Observable
8+
import io.reactivex.rxjava3.disposables.Disposable
9+
10+
/*
11+
* Created by Weiyi Li on 12/05/21.
12+
* https://github.com/li2
13+
*/
14+
15+
/**
16+
* Subscribe on [Lifecycle.Event.ON_START] and dispose on [Lifecycle.Event.ON_STOP] automatically.
17+
*
18+
* @param lifecycle an instance of [androidx.lifecycle.LifecycleRegistry], for example, [androidx.activity.ComponentActivity.getLifecycle]
19+
* @param onNext the consumer to accept emissions from the current Observable.
20+
*/
21+
fun <T> Observable<T>.subscribeOnLifecycle(lifecycle: Lifecycle, onNext: (T) -> Unit) {
22+
val lifecycleObserver: LifecycleObserver = object : LifecycleObserver {
23+
private var subscription: Disposable? = null
24+
25+
@OnLifecycleEvent(Lifecycle.Event.ON_START)
26+
fun subscribe() {
27+
subscription = subscribe(onNext)
28+
}
29+
30+
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
31+
fun dispose() {
32+
subscription?.dispose()
33+
}
34+
}
35+
36+
lifecycle.addObserver(lifecycleObserver)
37+
}
38+
39+
/**
40+
* Subscribe on [Lifecycle.Event.ON_START] and dispose on [Lifecycle.Event.ON_STOP] automatically.
41+
*
42+
* @param lifecycle an instance of [androidx.lifecycle.LifecycleRegistry], for example, [androidx.activity.ComponentActivity.getLifecycle]
43+
* @param onNext the consumer to accept emissions from the current Flowable.
44+
*/
45+
fun <T> Flowable<T>.subscribeOnLifecycle(lifecycle: Lifecycle, onNext: (T) -> Unit) {
46+
val lifecycleObserver: LifecycleObserver = object : LifecycleObserver {
47+
private var subscription: Disposable? = null
48+
49+
@OnLifecycleEvent(Lifecycle.Event.ON_START)
50+
fun subscribe() {
51+
subscription = subscribe(onNext)
52+
}
53+
54+
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
55+
fun dispose() {
56+
subscription?.dispose()
57+
}
58+
}
59+
60+
lifecycle.addObserver(lifecycleObserver)
61+
}

0 commit comments

Comments
 (0)