15
15
*/
16
16
package rx .android .observables ;
17
17
18
+ import static rx .android .schedulers .AndroidSchedulers .mainThread ;
19
+
18
20
import rx .Observable ;
19
21
import rx .operators .OperatorObserveFromAndroidComponent ;
22
+ import rx .operators .OperatorWeakBinding ;
23
+
20
24
import android .app .Activity ;
21
25
import android .app .Fragment ;
22
26
import android .os .Build ;
@@ -58,6 +62,7 @@ private AndroidObservable() {}
58
62
* @param <T>
59
63
* @return a new observable sequence that will emit notifications on the main UI thread
60
64
*/
65
+ @ Deprecated
61
66
public static <T > Observable <T > fromActivity (Activity activity , Observable <T > sourceObservable ) {
62
67
return OperatorObserveFromAndroidComponent .observeFromAndroidComponent (sourceObservable , activity );
63
68
}
@@ -86,6 +91,7 @@ public static <T> Observable<T> fromActivity(Activity activity, Observable<T> so
86
91
* @param <T>
87
92
* @return a new observable sequence that will emit notifications on the main UI thread
88
93
*/
94
+ @ Deprecated
89
95
public static <T > Observable <T > fromFragment (Object fragment , Observable <T > sourceObservable ) {
90
96
if (USES_SUPPORT_FRAGMENTS && fragment instanceof android .support .v4 .app .Fragment ) {
91
97
return OperatorObserveFromAndroidComponent .observeFromAndroidComponent (sourceObservable , (android .support .v4 .app .Fragment ) fragment );
@@ -95,4 +101,21 @@ public static <T> Observable<T> fromFragment(Object fragment, Observable<T> sour
95
101
throw new IllegalArgumentException ("Target fragment is neither a native nor support library Fragment" );
96
102
}
97
103
}
104
+
105
+ public static <T > Observable <T > bindActivity (Activity activity , Observable <T > cachedSequence ) {
106
+ return cachedSequence .observeOn (mainThread ()).lift (new OperatorWeakBinding <T , Activity >(activity ));
107
+ }
108
+
109
+ public static <T > Observable <T > bindFragment (Object fragment , Observable <T > cachedSequence ) {
110
+ Observable <T > source = cachedSequence .observeOn (mainThread ());
111
+ if (USES_SUPPORT_FRAGMENTS && fragment instanceof android .support .v4 .app .Fragment ) {
112
+ android .support .v4 .app .Fragment f = (android .support .v4 .app .Fragment ) fragment ;
113
+ return source .lift (new OperatorWeakBinding <T , android .support .v4 .app .Fragment >(f ));
114
+ } else if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .HONEYCOMB && fragment instanceof Fragment ) {
115
+ Fragment f = (Fragment ) fragment ;
116
+ return source .lift (new OperatorWeakBinding <T , Fragment >(f ));
117
+ } else {
118
+ throw new IllegalArgumentException ("Target fragment is neither a native nor support library Fragment" );
119
+ }
120
+ }
98
121
}
0 commit comments