@@ -31,6 +31,18 @@ public class SchedulerFragment extends Fragment {
3131 String [] data = {"1" , "2" , "3" };
3232 @ BindView (R .id .btn_no_map )
3333 Button mBtnNoMap ;
34+ @ BindView (R .id .btn_just )
35+ Button mBtnJust ;
36+ @ BindView (R .id .btn_just_one )
37+ Button mBtnJustone ;
38+ @ BindView (R .id .btn_just_two )
39+ Button mBtnJusttwo ;
40+ @ BindView (R .id .btn_just_three )
41+ Button mBtnJustthree ;
42+ @ BindView (R .id .btn_just_four )
43+ Button mBtnJustfour ;
44+ @ BindView (R .id .btn_just_five )
45+ Button mBtnJustfive ;
3446 @ BindView (R .id .btn_one_map )
3547 Button mBtnOneMap ;
3648 @ BindView (R .id .btn_two_map )
@@ -45,14 +57,15 @@ public class SchedulerFragment extends Fragment {
4557 private Subscription oneMapSubscription ;
4658 private Subscription twoMapSubscription ;
4759 private Subscription longOpeSubscription ;
48- private CompositeSubscription mCompositeSubscription ;;
60+ private CompositeSubscription mCompositeSubscription ;
61+ ;
4962
5063 @ Override
5164 public View onCreateView (LayoutInflater inflater , ViewGroup container ,
5265 Bundle savedInstanceState ) {
5366 View view = inflater .inflate (R .layout .scheduler_fragment , container , false );
5467 ButterKnife .bind (this , view );
55- mCompositeSubscription = new CompositeSubscription ();
68+ mCompositeSubscription = new CompositeSubscription ();
5669 return view ;
5770 }
5871
@@ -68,9 +81,28 @@ public void onViewCreated(View view, Bundle savedInstanceState) {
6881 }
6982
7083
71- @ OnClick ({R .id .btn_no_map , R .id .btn_one_map , R .id .btn_two_map , R .id .btn_long_operation })
84+ @ OnClick ({R .id .btn_just , R .id .btn_just_one , R .id .btn_just_two ,
85+ R .id .btn_just_three ,R .id .btn_just_four , R .id .btn_just_five , R .id .btn_no_map , R .id .btn_one_map , R .id .btn_two_map , R .id .btn_long_operation })
7286 public void onClick (View view ) {
7387 switch (view .getId ()) {
88+ case R .id .btn_just :
89+ doJust ();
90+ break ;
91+ case R .id .btn_just_one :
92+ doJustOne ();
93+ break ;
94+ case R .id .btn_just_two :
95+ doJustTwo ();
96+ break ;
97+ case R .id .btn_just_three :
98+ doJustThree ();
99+ break ;
100+ case R .id .btn_just_four :
101+ doJustFour ();
102+ break ;
103+ case R .id .btn_just_five :
104+ doJustFive ();
105+ break ;
74106 case R .id .btn_no_map :
75107 doBaseOperation ();
76108 break ;
@@ -87,6 +119,192 @@ public void onClick(View view) {
87119 }
88120
89121
122+ private void doJust () {
123+ Observable .just (1 , 2 , 3 )
124+ .subscribe (new Subscriber <Integer >() {
125+ @ Override
126+ public void onCompleted () {
127+ printLog ("Completed" );
128+ }
129+
130+ @ Override
131+ public void onError (Throwable e ) {
132+ printLog ("onError" );
133+
134+ }
135+
136+ @ Override
137+ public void onNext (Integer integer ) {
138+ printLog ("Next " + integer + " " );
139+ }
140+ });
141+ }
142+
143+
144+ private void doJustOne () {
145+ Observable .just (1 , 2 , 3 )
146+ .subscribeOn (Schedulers .io ())
147+ .subscribe (new Subscriber <Integer >() {
148+ @ Override
149+ public void onCompleted () {
150+ printLog ("Completed" );
151+ }
152+
153+ @ Override
154+ public void onError (Throwable e ) {
155+ printLog ("onError" );
156+
157+ }
158+
159+ @ Override
160+ public void onNext (Integer integer ) {
161+ printLog ("Next " + integer + " " );
162+ }
163+ });
164+ }
165+
166+ private void doJustTwo () {
167+ Observable .just (1 , 2 , 3 )
168+ .subscribeOn (Schedulers .io ())
169+ .observeOn (AndroidSchedulers .mainThread ())
170+ .subscribe (new Subscriber <Integer >() {
171+ @ Override
172+ public void onCompleted () {
173+ printLog ("Completed" );
174+ }
175+
176+ @ Override
177+ public void onError (Throwable e ) {
178+ printLog ("onError" );
179+
180+ }
181+
182+ @ Override
183+ public void onNext (Integer integer ) {
184+ printLog ("Next " + integer + " " );
185+ }
186+ });
187+ }
188+
189+ private void doJustThree () {
190+ Observable .just (1 , 2 , 3 )
191+ .subscribeOn (Schedulers .io ())
192+ .map (new Func1 <Integer , String >() {
193+ @ Override
194+ public String call (Integer integer ) {
195+ printLog ("map " +integer +"a" );
196+ return integer +"a" ;
197+ }
198+ })
199+ .subscribe (new Subscriber <String >() {
200+ @ Override
201+ public void onCompleted () {
202+ printLog ("Completed" );
203+ }
204+
205+ @ Override
206+ public void onError (Throwable e ) {
207+ printLog ("onError" );
208+
209+ }
210+
211+ @ Override
212+ public void onNext (String s ) {
213+ printLog ("Next " +s );
214+
215+ }
216+
217+ });
218+ }
219+ private void doJustFour () {
220+ Observable .just (1 , 2 , 3 )
221+ .subscribeOn (Schedulers .io ())
222+ .map (new Func1 <Integer , String >() {
223+ @ Override
224+ public String call (Integer integer ) {
225+ printLog ("map1 " +integer +"a" );
226+ return integer +"a" ;
227+ }
228+ })
229+ // 试一试把上面的subscribeOn注释掉,使用这个,效果是不一样的
230+ // .subscribeOn(AndroidSchedulers.mainThread())
231+ .observeOn (AndroidSchedulers .mainThread ())
232+ .map (new Func1 <String , String >() {
233+ @ Override
234+ public String call (String s ) {
235+ printLog ("map2 " +s +"b " );
236+ return s +"b" ;
237+ }
238+ })
239+ .subscribe (new Subscriber <String >() {
240+ @ Override
241+ public void onCompleted () {
242+ printLog ("Completed" );
243+ }
244+
245+ @ Override
246+ public void onError (Throwable e ) {
247+ printLog ("onError" );
248+
249+ }
250+
251+ @ Override
252+ public void onNext (String s ) {
253+ printLog ("Next " +s );
254+
255+ }
256+
257+ });
258+ }
259+ private void doJustFive () {
260+ Observable .just (1 , 2 , 3 )
261+ .subscribeOn (Schedulers .io ())
262+ .map (new Func1 <Integer , String >() {
263+ @ Override
264+ public String call (Integer integer ) {
265+ printLog ("map1 " +integer +"a" );
266+ return integer +"a" ;
267+ }
268+ })
269+ .observeOn (AndroidSchedulers .mainThread ())
270+ .map (new Func1 <String , String >() {
271+ @ Override
272+ public String call (String s ) {
273+ printLog ("map2 " +s +"b " );
274+ return s +"b" ;
275+ }
276+ })
277+ .observeOn (Schedulers .io ())
278+ .map (new Func1 <String , String >() {
279+ @ Override
280+ public String call (String s ) {
281+ printLog ("map3 " +s +"c " );
282+ return s +"c" ;
283+ }
284+ })
285+ .observeOn (AndroidSchedulers .mainThread ())
286+ .subscribe (new Subscriber <String >() {
287+ @ Override
288+ public void onCompleted () {
289+ printLog ("Completed" );
290+ }
291+
292+ @ Override
293+ public void onError (Throwable e ) {
294+ printLog ("onError" );
295+
296+ }
297+
298+ @ Override
299+ public void onNext (String s ) {
300+ printLog ("Next " +s );
301+
302+ }
303+
304+ });
305+ }
306+
307+
90308 /**
91309 * Subscriber的基本使用,没有线程切换,没有过滤等操作
92310 * 你自己可以试一试
@@ -156,7 +374,7 @@ public void call(Subscriber<? super String> subscriber) {
156374 public String call (String s ) {
157375 String result = s + "a" ;
158376 printLog (result );
159- return result ;
377+ return result ;
160378 }
161379 }).subscribe (new Subscriber <String >() {
162380 @ Override
@@ -182,7 +400,6 @@ public void onNext(String s) {
182400 }
183401
184402
185-
186403 /**
187404 * 模拟阻操作,如网络请求,文件读取,再加上scheduler,切换线程。
188405 */
@@ -253,17 +470,17 @@ public void call(Subscriber<? super String> subscriber) {
253470 .map (new Func1 <String , String >() {
254471 @ Override
255472 public String call (String s ) {
256- String result = s + "a" ;
257- printLog ("Map1 " + result );
473+ String result = s + "a" ;
474+ printLog ("Map1 " + result );
258475 return result ;
259476 }
260477 })
261478 .observeOn (AndroidSchedulers .mainThread ())
262479 .map (new Func1 <String , String >() {
263480 @ Override
264481 public String call (String s ) {
265- String result = s + "b" ;
266- printLog ("Map2 " + result );
482+ String result = s + "b" ;
483+ printLog ("Map2 " + result );
267484 return result ;
268485 }
269486 })
@@ -290,6 +507,7 @@ public void onNext(String s) {
290507 });
291508 mCompositeSubscription .add (twoMapSubscription );
292509 }
510+
293511 private void dosomethingBlockThread () {
294512 printLog ("blocking...." );
295513 try {
0 commit comments