成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

慕課網(wǎng)_《RxJava與RxAndroid基礎(chǔ)入門》學(xué)習(xí)總結(jié)

劉明 / 699人閱讀

時(shí)間:2017年10月16日星期一
說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com
教學(xué)源碼:無
學(xué)習(xí)源碼:https://github.com/zccodere/s...

第一章:課程簡(jiǎn)介 1-1 課程介紹

本門課程的主要內(nèi)容

RxJava是什么
RxAndroid是什么
RxJava常用操作符(重點(diǎn)、難點(diǎn))
怎樣在項(xiàng)目中使用RxJava和RxAndroid

如何學(xué)習(xí)RxJava與RxAndroid

總體總體章節(jié),有初步了解
跟著講解自己動(dòng)手實(shí)際去敲代碼
GitHub上RxJava項(xiàng)目Wiki文檔
看RxJava相關(guān)博客和優(yōu)秀文章

為什么學(xué)RxJava與RxAndroid

RxJava能提高工作效率
RxJava能優(yōu)雅解決復(fù)雜業(yè)務(wù)場(chǎng)景
RxJava使用越來越流行
RxJava的優(yōu)秀特性

本門課程能夠?qū)W到什么

了解什么是響應(yīng)式編程
了解RxJava和RxAndroid到底是什么
了解RxJava歷史來源
清除RxJava與RxAndroid關(guān)系
學(xué)會(huì)在項(xiàng)目中使用RxJava和RxAndroid

相關(guān)資源

RxJava英文文檔:https://github.com/ReactiveX/RxJava/wiki
RxJava中文文檔:https://mcxiaoke.gitbooks.io/rxdocs/content/
RxJava經(jīng)典資料:https://github.com/lzyzsd/Awesome-RxJava
1-2 響應(yīng)式編程

什么是響應(yīng)式編程

定義:是一種基于異步數(shù)據(jù)流概念的編程模式
關(guān)鍵概念:事件
使用場(chǎng)景:UI(通用)
第二章:基本概述 2-1 RxJava概述

RxJava是什么

異步數(shù)據(jù)處理庫
擴(kuò)展的觀察者模式

RxJava歷史來源

Netflix公司遇到問題
目標(biāo):重構(gòu)當(dāng)前架構(gòu)來減少REST調(diào)用的次數(shù)
嘗試:微軟RX遷移到JVM

RxJava特點(diǎn)

jar包小于1MB
輕量級(jí)框架
支持Java8 lambda
支持Java6及Android 2.3以上
支持異步和同步

擴(kuò)展的觀察者模式

onCompleted()事件:通知完畢事件
onError()事件:通知異常事件
使用組合而不是嵌套,避免陷入回調(diào)地獄
2-2 RxAndroid概述

RxAndroid是什么

是RxJava針對(duì)Android平臺(tái)的一個(gè)擴(kuò)展,用于Android開發(fā)
提供響應(yīng)式擴(kuò)展組件快速、易于開發(fā)Android應(yīng)用程序

Schedulers(調(diào)度器)

解決Android主線程問題:針對(duì)Android
解決多線程問題

Schedulers示例

2-3 RxJava擴(kuò)展

觀察者模式四大要素

Observable被觀察者
Observer觀察者
Subscribe訂閱
事件

觀察者模式圖示

RxJava擴(kuò)展的觀察者模式圖示

第三章:使用詳解 3-1 入門案例

創(chuàng)建名為myrxjava的maven工程pom如下


  4.0.0

  com.myimooc
  myrxjava
  0.0.1-SNAPSHOT
  jar

  myrxjava
  http://maven.apache.org

    
        UTF-8
        1.8
        1.8
        1.8
    

  
    
        io.reactivex
        rxjava
        1.3.2
    
    
      junit
      junit
      4.12
      test
    
  

1.編寫HelloWorld類

package com.myimooc.myrxjava;

import rx.Observable;
import rx.Observable.OnSubscribe;
import rx.Subscriber;

/**
 * @title HelloWorld類
 * @describe 3-1 入門案例HelloWorld
 * @author zc
 * @version 1.0 2017-10-16
 */
public class HelloWorld 
{
    @SuppressWarnings({ "deprecation", "rawtypes", "unchecked" })
    public static void main( String[] args )
    {
        
        // 1.創(chuàng)建被觀察者
        Observable myObservable = Observable.create(new OnSubscribe(){
            @Override
            public void call(Subscriber subscriber) {
                subscriber.onNext("hello World!");
                throw new NullPointerException("出錯(cuò)啦");
            }
        });
        
        // 2.創(chuàng)建觀察者
        Subscriber mySubscriber = new Subscriber(){
            @Override
            public void onCompleted() {
                System.out.println("onCompleted()");
            }
            @Override
            public void onError(Throwable arg0) {
                System.out.println("onError()");
            }
            @Override
            public void onNext(String str) {
                System.out.println("onNext() " + str);
            }
        };
        
        // 3.訂閱事件
        myObservable.subscribe(mySubscriber);
    }
}
3-2 創(chuàng)建操作

操作符的分類

Creating Observables(創(chuàng)建Observable:創(chuàng)建操作)
Transforming Observables(轉(zhuǎn)換Observable:轉(zhuǎn)換操作)
Filtering Observables(過濾Observable:過濾操作)
Combining Observables(組合Observable:組合操作)
Error Handling Operators(處理錯(cuò)誤)

Creating Observables(創(chuàng)建Observable)

Create
Just
From
Defer
Empty/Never/Throw
Interval
Range
Repeat
Start
Timer

代碼編寫

1.編寫CreatingObservables類

package com.myimooc.myrxjava;

import java.util.ArrayList;
import java.util.List;

import rx.Observable;
import rx.Observable.OnSubscribe;
import rx.functions.Func0;
import rx.Subscriber;

/**
 * @title 創(chuàng)建操作符
 * @describe 創(chuàng)建操作符演示
 * @author zc
 * @version 1.0 2017-10-16
 */
@SuppressWarnings("unused")
public class CreatingObservables {
    
    public static void main(String[] args) {
//        create();
//        just();
//        from();
//        defer();
        repeat();
    }
    
    /**
     * repeat操作符
     */
    @SuppressWarnings({ "unchecked", "rawtypes" })
    private static void repeat() {
        Observable observable= Observable.range(1,5).repeat(2);
        observable.subscribe(new Subscriber() {
            @Override
            public void onCompleted() {
                System.out.println("onCompleted()");
            }
            @Override
            public void onError(Throwable arg0) {
                System.out.println("onError()");
            }
            @Override
            public void onNext(Integer str) {
                System.out.println("onNext(): " + str);
            }
        });
    }
    
    /**
     * range操作符
     */
    @SuppressWarnings({ "unchecked", "rawtypes" })
    private static void range() {
        Observable observable= Observable.range(1,5);
        observable.subscribe(new Subscriber() {
            @Override
            public void onCompleted() {
                System.out.println("onCompleted()");
            }
            @Override
            public void onError(Throwable arg0) {
                System.out.println("onError()");
            }
            @Override
            public void onNext(Integer str) {
                System.out.println("onNext(): " + str);
            }
        });
    }

    private static String deferStr = "default";
    /**
     * defer操作符
     */
    @SuppressWarnings({ "unchecked", "rawtypes" })
    private static void defer() {
        Observable observable= Observable.defer(new Func0>() {
            @Override
            public Observable call() {
                return Observable.just(deferStr);
            }
        });
        deferStr = "RxJava";
        observable.subscribe(new Subscriber() {
            @Override
            public void onCompleted() {
                System.out.println("onCompleted()");
            }
            @Override
            public void onError(Throwable arg0) {
                System.out.println("onError()");
            }
            @Override
            public void onNext(String str) {
                System.out.println("onNext(): " + str);
            }
        });
    }

    /**
     * from操作符
     */
    private static void from() {
        List nums = new ArrayList();
        nums.add(1);
        nums.add(2);
        nums.add(3);
        nums.add(4);
        nums.add(5);
        Observable.from(nums).subscribe(new Subscriber() {
            @Override
            public void onCompleted() {
                System.out.println("onCompleted()");
            }
            @Override
            public void onError(Throwable arg0) {
                System.out.println("onError()");
            }
            @Override
            public void onNext(Integer str) {
                System.out.println("onNext(): " + str);
            }
        });
    }

    /**
     * just操作符
     */
    private static void just() {
        Observable.just("RxJava").subscribe(new Subscriber() {
            @Override
            public void onCompleted() {
                System.out.println("onCompleted()");
            }
            @Override
            public void onError(Throwable arg0) {
                System.out.println("onError()");
            }
            @Override
            public void onNext(String str) {
                System.out.println("onNext(): " + str);
            }
        });
    }

    /**
     * Create操作符
     */
    private static void create() {
        Observable.unsafeCreate(new OnSubscribe(){
            @Override
            public void call(Subscriber subscriber) {
                subscriber.onNext("RxJava");
            }
        }).subscribe(new Subscriber() {
            @Override
            public void onCompleted() {
                System.out.println("onCompleted()");
            }
            @Override
            public void onError(Throwable arg0) {
                System.out.println("onError()");
            }
            @Override
            public void onNext(String str) {
                System.out.println("onNext(): " + str);
            }
        });
    }
}
3-3 轉(zhuǎn)換操作

Transforming Observables(轉(zhuǎn)換Observable)

Map
FlatMap
GroupBy
Buffer
Scan
Window

代碼編寫

1.編寫TransformingObservables類

package com.myimooc.myrxjava;

import java.util.List;

import rx.Observable;
import rx.Observer;
import rx.Subscriber;
import rx.functions.Func1;
import rx.functions.Func2;
import rx.observables.GroupedObservable;

/**
 * @title 轉(zhuǎn)換操作符
 * @describe 轉(zhuǎn)換操作符演示
 * @author zc
 * @version 1.0 2017-10-16
 */
@SuppressWarnings("unused")
public class TransformingObservables {
    
    public static void main(String[] args) {
//        transformMap();
//        transformFlatMap();
//        transformGroupBy();
//        transformBuffer();
        transformScan();
    }

    /**
     * Scan操作符:對(duì)數(shù)據(jù)進(jìn)行累加
     */
    private static void transformScan() {
        Observable.range(1,5).scan(new Func2() {
            
            @Override
            public Integer call(Integer sum, Integer num) {
                return sum + num;
            }
            
        }).subscribe(new Observer() {
            @Override
            public void onCompleted() {
                System.out.println("onCompleted()");
            }
            @Override
            public void onError(Throwable arg0) {
                System.out.println("onError()");
            }
            @Override
            public void onNext(Integer str) {
                System.out.println("onNext(): " + str);
            }
        });
    }

    /**
     * Buffer操作符:分批讀取數(shù)據(jù)
     */
    private static void transformBuffer() {
        Observable.range(1,5).buffer(2).subscribe(new Observer>() {
            @Override
            public void onCompleted() {
                System.out.println("onCompleted()");
            }
            @Override
            public void onError(Throwable arg0) {
                System.out.println("onError()");
            }
            @Override
            public void onNext(List str) {
                System.out.println("onNext(): " + str);
            }
        });
    }

    /**
     * GroupBy操作符:對(duì)數(shù)據(jù)進(jìn)行分組操作
     */
    private static void transformGroupBy() {
        Observable.just(1,2,3,4,5).groupBy(new Func1(){

            @Override
            public Integer call(Integer data) {
                return data % 2;
            }
            
        }).subscribe(new Observer>() {
            @Override
            public void onCompleted() {
            }
            @Override
            public void onError(Throwable arg0) {
            }
            @Override
            public void onNext(final GroupedObservable groupedObservable) {
                groupedObservable.subscribe(new Subscriber() {

                    @Override
                    public void onCompleted() {
                    }
                    @Override
                    public void onError(Throwable arg0) {
                    }
                    @Override
                    public void onNext(Integer data) {
                        System.out.println("group:" + groupedObservable.getKey() + " data:" + data);
                    }
                });
            }
        });
    }

    /**
     * FlatMap操作符:一個(gè)對(duì)象轉(zhuǎn)換為多個(gè)對(duì)象
     */
    private static void transformFlatMap() {
        
        Observable.just(1,2,3,4,5).flatMap(new Func1>(){

            @Override
            public Observable call(Integer num) {
                return Observable.just(String.valueOf(num));
            }
            
        }).subscribe(new Subscriber() {
            @Override
            public void onCompleted() {
                System.out.println("onCompleted()");
            }
            @Override
            public void onError(Throwable arg0) {
                System.out.println("onError()");
            }
            @Override
            public void onNext(String str) {
                System.out.println("onNext(): " + str);
            }
        });
    }

    /**
     * Map操作符:一個(gè)對(duì)象轉(zhuǎn)換為另一個(gè)對(duì)象
     */
    private static void transformMap() {
        
        Observable.just(123).map(new Func1(){

            @Override
            public String call(Integer num) {
                return String.valueOf(num);
            }
            
        }).subscribe(new Subscriber() {
            @Override
            public void onCompleted() {
                System.out.println("onCompleted()");
            }
            @Override
            public void onError(Throwable arg0) {
                System.out.println("onError()");
            }
            @Override
            public void onNext(String str) {
                System.out.println("onNext(): " + str);
            }
        });
    }
    
    
}
3-4 過濾操作

Filtering Observables(過濾Observable)

Debounce
Distinct
ElementAt
Filter
First
IgnoreElements
Last
Sample
Skip
SkipLast
Take
TakeLast

代碼編寫

1.編寫FilteringObservables類

package com.myimooc.myrxjava;

import java.util.concurrent.TimeUnit;

import rx.Observable;
import rx.Observable.OnSubscribe;
import rx.Observer;
import rx.Subscriber;
import rx.functions.Func1;
import rx.functions.Func2;

/**
 * @title 過濾操作符
 * @describe 過濾操作符演示
 * @author zc
 * @version 1.0 2017-10-17
 */
@SuppressWarnings("unused")
public class FilteringObservables {
    
    public static void main(String[] args) {
//        filterDebounce();
//        filterDistinct();
//        filterElementAt();
//        filterFilter();
//        filterIgnoreElements();
//        filterLast();
//        filterSample();
//        filterSkip();
        filterTake();
    }

    /**
     * Take操作符:取對(duì)應(yīng)數(shù)據(jù)項(xiàng)
     */
    private static void filterTake() {
        Observable.just(1,2,3,4).takeLast(2).subscribe(new Subscriber() {
            @Override
            public void onCompleted() {
                System.out.println("onCompleted()");
            }
            @Override
            public void onError(Throwable arg0) {
                System.out.println("onError()");
            }
            @Override
            public void onNext(Integer str) {
                System.out.println("onNext(): " + str);
            }
        });
    }

    /**
     * Skip操作符:跳過數(shù)據(jù)項(xiàng)
     */
    private static void filterSkip() {
        Observable.just(1,2,3,4).skipLast(2).subscribe(new Subscriber() {
            @Override
            public void onCompleted() {
                System.out.println("onCompleted()");
            }
            @Override
            public void onError(Throwable arg0) {
                System.out.println("onError()");
            }
            @Override
            public void onNext(Integer str) {
                System.out.println("onNext(): " + str);
            }
        });
    }

    /**
     * Sample操作符:取樣
     */
    private static void filterSample() {
        Observable.unsafeCreate(new OnSubscribe(){
            @Override
            public void call(Subscriber arg) {
                try{
                    for (int i=0;i<10;i++){
                        Thread.sleep(1000);
                        arg.onNext(i);
                    }
                    arg.onCompleted();
                }catch (Exception e) {
                    arg.onError(e);
                }
            }
        }).sample(4, TimeUnit.SECONDS).subscribe(new Subscriber() {
            @Override
            public void onCompleted() {
                System.out.println("onCompleted()");
            }
            @Override
            public void onError(Throwable arg0) {
                System.out.println("onError()" + arg0.getMessage());
            }
            @Override
            public void onNext(Integer str) {
                System.out.println("onNext(): " + str);
            }
        });
    }

    /**
     * Last操作符:取數(shù)據(jù)項(xiàng)最后一個(gè)數(shù)據(jù)
     */
    private static void filterLast() {
        Observable.just(1,2,3,2,3).last().subscribe(new Subscriber() {
            @Override
            public void onCompleted() {
                System.out.println("onCompleted()");
            }
            @Override
            public void onError(Throwable arg0) {
                System.out.println("onError()");
            }
            @Override
            public void onNext(Integer str) {
                System.out.println("onNext(): " + str);
            }
        });
    }

    /**
     * IgnoreElements操作符:忽略掉指定元素,直接回調(diào)onCompleted或onError方法
     */
    private static void filterIgnoreElements() {
        Observable.unsafeCreate(new OnSubscribe() {
            @Override
            public void call(Subscriber arg) {
                arg.onNext(123);
                arg.onCompleted();
//                throw new NullPointerException();
            }
        }).ignoreElements().subscribe(new Subscriber() {
            @Override
            public void onCompleted() {
                System.out.println("onCompleted()");
            }
            @Override
            public void onError(Throwable arg0) {
                System.out.println("onError()" + arg0.getMessage());
            }
            @Override
            public void onNext(Integer str) {
                System.out.println("onNext(): " + str);
            }
        });
    }

    /**
     * Filter操作符:過濾
     */
    private static void filterFilter() {
        Observable.just(1,2,3,2,3).distinct().filter(new Func1() {
            @Override
            public Boolean call(Integer arg) {
                return arg > 1;
            }
        }).subscribe(new Subscriber() {
            @Override
            public void onCompleted() {
                System.out.println("onCompleted()");
            }
            @Override
            public void onError(Throwable arg0) {
                System.out.println("onError()");
            }
            @Override
            public void onNext(Integer str) {
                System.out.println("onNext(): " + str);
            }
        });
    }

    /**
     * ElementAt操作符:取出指定位置的元素
     */
    private static void filterElementAt() {
        Observable.just(1,2,3,2,3).elementAt(3).subscribe(new Subscriber() {
            @Override
            public void onCompleted() {
                System.out.println("onCompleted()");
            }
            @Override
            public void onError(Throwable arg0) {
                System.out.println("onError()");
            }
            @Override
            public void onNext(Integer str) {
                System.out.println("onNext(): " + str);
            }
        });
    }

    /**
     * Distinct操作符:去重操作符
     */
    private static void filterDistinct() {
        Observable.just(1,2,3,2,3).distinct().subscribe(new Subscriber() {
            @Override
            public void onCompleted() {
                System.out.println("onCompleted()");
            }
            @Override
            public void onError(Throwable arg0) {
                System.out.println("onError()");
            }
            @Override
            public void onNext(Integer str) {
                System.out.println("onNext(): " + str);
            }
        });
    }

    /**
     * Debounce操作符:在操作后指定時(shí)間內(nèi)無操作時(shí)響應(yīng)
     */
    private static void filterDebounce() {
        Observable.unsafeCreate(new OnSubscribe(){
            @Override
            public void call(Subscriber arg) {
                try{
                    for (int i=0;i<10;i++){
                        Thread.sleep(2000);
                        arg.onNext(i);
                    }
                    arg.onCompleted();
                }catch (Exception e) {
                    arg.onError(e);
                }
            }
        }).debounce(1,TimeUnit.SECONDS).subscribe(new Subscriber() {
            @Override
            public void onCompleted() {
                System.out.println("onCompleted()");
            }
            @Override
            public void onError(Throwable arg0) {
                System.out.println("onError()");
            }
            @Override
            public void onNext(Integer str) {
                System.out.println("onNext(): " + str);
            }
        });
    }
    
    

}
3-5 組合操作

Combining Observables(組合Observable)

Zip
Merge
StartWith
CombineLatest
Join
SwitchOnNext

代碼編寫

1.編寫CombiningObservables類

package com.myimooc.myrxjava;

import rx.Observable;
import rx.Subscriber;
import rx.functions.Func2;

/**
 * @title 組合操作符
 * @describe 組合操作符演示
 * @author zc
 * @version 1.0 2017-10-17
 */
@SuppressWarnings("unused")
public class CombiningObservables {
    
    public static void main(String[] args) {
//        combiningZip();
//        combiningMerge();
//        combiningStartWith();
        combiningCombineLatest();
    }
    
    /**
     * 用于將兩個(gè)Observable最近傳遞的數(shù)據(jù)通過Func2函數(shù)的規(guī)則進(jìn)行組合
     */
    @SuppressWarnings("static-access")
    private static void combiningCombineLatest() {
        Observable first = Observable.just(1,3,5);
        Observable second = Observable.just(2,4,6);
        
        first.combineLatest(first,second,new Func2(){
            @Override
            public Integer call(Integer num1, Integer num2) {
                System.out.println("num1 = "+num1 + " num2 = "+num2);
                return num1 + num2;
            }
        }).subscribe(new Subscriber() {
            @Override
            public void onCompleted() {
                System.out.println("onCompleted()");
            }
            @Override
            public void onError(Throwable arg0) {
                System.out.println("onError()");
            }
            @Override
            public void onNext(Integer str) {
                System.out.println("onNext(): " + str);
            }
        });
    }

    /**
     * 用于在源Observable傳遞的數(shù)據(jù)前增加數(shù)據(jù)
     * 使用startWith(Iterable),還可以在源Observable傳遞的數(shù)據(jù)前增加Iterable
     */
    private static void combiningStartWith() {
        Observable first = Observable.just(1,3,5);
        Observable second = Observable.just(2,4,6);
        
        first.startWith(second).subscribe(new Subscriber() {
            @Override
            public void onCompleted() {
                System.out.println("onCompleted()");
            }
            @Override
            public void onError(Throwable arg0) {
                System.out.println("onError()");
            }
            @Override
            public void onNext(Integer str) {
                System.out.println("onNext(): " + str);
            }
        });
    }

    /**
     * 將兩個(gè)Observable通知的事件序列合并成一個(gè)事件序列,就行是一個(gè)Observable通知的一樣
     * 可以簡(jiǎn)單的將它理解為兩個(gè)Observable合并成了一個(gè)Observable
     */
    private static void combiningMerge() {
        Observable observable1 = Observable.just(1,3,5);
        Observable observable2 = Observable.just(2,4,6);
        
        Observable.merge(observable1,observable2).subscribe(new Subscriber() {
            @Override
            public void onCompleted() {
                System.out.println("onCompleted()");
            }
            @Override
            public void onError(Throwable arg0) {
                System.out.println("onError()");
            }
            @Override
            public void onNext(Integer str) {
                System.out.println("onNext(): " + str);
            }
        });
    }

    /**
     * 用來合并兩個(gè)Observable傳遞的數(shù)據(jù)項(xiàng),根據(jù)Func2函數(shù)生成一個(gè)新的值并傳遞出去
     * 當(dāng)其中一個(gè)Observable傳遞數(shù)據(jù)結(jié)束或者出現(xiàn)異常后,另一個(gè)Observable也將停止傳遞數(shù)據(jù)
     */
    private static void combiningZip() {
        Observable observable1 = Observable.just(10,20,30);
        Observable observable2 = Observable.just(4,8,12,16);
        
        Observable.zip(observable1,observable2, new Func2(){
            @Override
            public Integer call(Integer integer1, Integer integer2) {
                return integer1 + integer2;
            }
        }).subscribe(new Subscriber() {
            @Override
            public void onCompleted() {
                System.out.println("onCompleted()");
            }
            @Override
            public void onError(Throwable arg0) {
                System.out.println("onError()");
            }
            @Override
            public void onNext(Integer str) {
                System.out.println("onNext(): " + str);
            }
        });
        
    }

    
    
}
3-6 處理錯(cuò)誤

Error Handling Operators(處理錯(cuò)誤)

Catch
Retry
第四章:線程控制 4-1 Java調(diào)度器

Schedulers(調(diào)度器)

調(diào)度器(Schedulers)是RxJava以一種及其簡(jiǎn)單的方式來解決多線程問題機(jī)制

Schedulers(調(diào)度器)種類

io()
    IO相關(guān)的操作
    這個(gè)調(diào)度器用于IO操作
computation()
    進(jìn)行計(jì)算的操作
    這個(gè)是計(jì)算工作默認(rèn)的調(diào)度器,與IO操作無關(guān)
    例如:buffer()、debounce()、delay()、interval()、sample()、skip()
immediate()
    立即執(zhí)行的操作
    這個(gè)調(diào)度器允許你立即在當(dāng)前線程執(zhí)行你指定的工作
    例如:timeout()、timeInterval()、timestamp()
newThread()
    創(chuàng)建一個(gè)新的線程
    它為指定任務(wù)啟動(dòng)一個(gè)新的線程
trampoline()
    按照順序進(jìn)行處理
    調(diào)度器會(huì)按序處理隊(duì)列,并運(yùn)行隊(duì)列中每一個(gè)任務(wù)
    例如:repeat()、retry()
4-2 Android調(diào)度器

AndroidSchedulers

AndroidSchedulers是RxAndroid庫提供在安卓平臺(tái)的調(diào)度器(指定觀察者在主線程)

代碼示例

4-3 非阻塞IO操作

非阻塞IO操作:圖片保存

阻塞與非阻塞IO操作比較

4-4 指定線程

SubscribeOn

RxJava提供了subscribeOn()方法來用于每個(gè)Observable對(duì)象

ObserveOn

RxJava提供了observeOn()方法來用于每個(gè)Subscriber(Observer)對(duì)象

網(wǎng)絡(luò)請(qǐng)求實(shí)例

第五章:課程總結(jié) 5-1 課程總結(jié)

課程總結(jié)

理解響應(yīng)式編程
清楚RxJava和RxAndroid是什么
了解RxJava各種操作符
了解RxJava擴(kuò)展的觀察者模式與一般觀察者模式的區(qū)別
了解RxJava線程調(diào)度器(Schedulers)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/67787.html

相關(guān)文章

  • 課網(wǎng)_《Spring入門篇》學(xué)習(xí)總結(jié)

    摘要:入門篇學(xué)習(xí)總結(jié)時(shí)間年月日星期三說明本文部分內(nèi)容均來自慕課網(wǎng)。主要的功能是日志記錄,性能統(tǒng)計(jì),安全控制,事務(wù)處理,異常處理等等。 《Spring入門篇》學(xué)習(xí)總結(jié) 時(shí)間:2017年1月18日星期三說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)示例源碼:https://github.com/zccodere/s...個(gè)人學(xué)習(xí)源碼:https://git...

    Ververica 評(píng)論0 收藏0
  • 課網(wǎng)_《Netty入門之WebSocket初體驗(yàn)》學(xué)習(xí)總結(jié)

    時(shí)間:2018年04月11日星期三 說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):https://www.imooc.com 教學(xué)源碼:https://github.com/zccodere/s... 學(xué)習(xí)源碼:https://github.com/zccodere/s... 第一章:課程介紹 1-1 課程介紹 什么是Netty 高性能、事件驅(qū)動(dòng)、異步非阻塞的IO Java開源框架 基于NIO的客戶...

    Noodles 評(píng)論0 收藏0
  • 課網(wǎng)_《SpringMVC數(shù)據(jù)綁定入門學(xué)習(xí)總結(jié)

    摘要:數(shù)據(jù)綁定入門學(xué)習(xí)總結(jié)時(shí)間年月日星期日說明本文部分內(nèi)容均來自慕課網(wǎng)。慕課網(wǎng)教學(xué)示例源碼個(gè)人學(xué)習(xí)源碼第一章課程介紹數(shù)據(jù)綁定入門概述數(shù)據(jù)綁定概念來自百度百科簡(jiǎn)單綁定是將一個(gè)用戶界面元素控件的屬性綁定到一個(gè)類型對(duì)象實(shí)例上的某個(gè)屬性的方法。 《SpringMVC數(shù)據(jù)綁定入門》學(xué)習(xí)總結(jié) 時(shí)間:2017年2月19日星期日說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.co...

    Karrdy 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

劉明

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<