RxJava学习笔记1(基础)

2016-03-23  本文已影响1275人  会飞的大象

一、概念

  1. 响应式编程:是一种基于异步数据流概念的编程模型。
  1. RxJava特点
  1. 观察者模式适用场景
  1. Rxjava的四个角色
  1. 和传统编程方式的理解
    Observable就是数据,Observer就是方法(对数据的操作),
    Observable.subscriber(Observer)就是方法的调用

二、Observable

可以和iterator对比理解(如果起初不理解Observable,就把它当做是个iterator)

Event Iterable(pull) Observable(push)
检索数据 T next() onNext(T)
发现错误 throws Exception onError(Throwable)
完成 !hasNext() onComplete()
  1. Observale三个回调
  1. Observable的分类
    从发射物的角度
  1. Observable的创建
  1. Observable的一些特殊方法

三、Subject

Subject = Observable + Observer

  1. Rxjava提供的四种Subjec

四、线程控制Schedulers

  1. StrickMode
@Override
public void onCreate() { 
    super.onCreate();
    if (BuildConfig.DEBUG) {
        StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectAll().penaltyLog().build()); 
        StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectAll().penaltyLog().build());
    } 
}
  1. RxJava提供的五种调度器
  1. subscribeOn()和ObserveOn()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())

在io线程操作数据,在主线程更新UI

五、需要注意的事情

  1. 背压
    事件产生的速度比消费快。发生 overproucing 后,当链式结构不能承受数据压力时,就会抛出 MissingBackpressureException异常。
    onBackpressureBuffer
    onBackpressureDrop

六、操作符列表

官方文档列出的操作符,共393个。同学们奋斗吧……,接下来的博客会具体介绍
Aggregate

**All
**

**Amb
**

and_

**And
**

Any

apply

as_blocking

AsObservable

AssertEqual

asyncAction

asyncFunc

**Average
**

averageDouble

averageFloat

averageInteger

averageLong

blocking

**Buffer
**

bufferWithCount

bufferWithTime

bufferWithTimeOrCount

byLine

cache

case

Cast

**Catch
**

catchException

collect

collect
(RxScala version of **Filter
**)
**CombineLatest
**

combineLatestWith

**Concat
**

concat_all

concatMap

concatMapObserver

concatAll

concatWith

**Connect
**

connect_forever

cons

**Contains
**

controlled

**Count
**

countLong

**Create
**

cycle

**Debounce
**

decode

**DefaultIfEmpty
**

**Defer
**

deferFuture

**Delay
**

delaySubscription

delayWithSelector

**Dematerialize
**

**Distinct
**

DistinctUntilChanged

**Do
**

doAction

doOnCompleted

doOnEach

doOnError

doOnRequest

doOnSubscribe

doOnTerminate

doOnUnsubscribe

doseq

doWhile

drop

dropRight

dropUntil

dropWhile

**ElementAt
**

ElementAtOrDefault

**Empty
**

empty?

encode

ensures

error

every

exclusive

exists

expand

failWith

**Filter
**

filterNot

Finally

finallyAction

finallyDo

find

findIndex

**First
**

FirstOrDefault

firstOrElse

**FlatMap
**

flatMapFirst

flatMapIterable

flatMapIterableWith

flatMapLatest

flatMapObserver

flatMapWith

flatMapWithMaxConcurrent

flat_map_with_index

flatten

flattenDelayError

foldl

foldLeft

for

forall

ForEach

forEachFuture

forIn

forkJoin

**From
**

fromAction

fromArray

FromAsyncPattern

fromCallable

fromCallback

FromEvent

FromEventPattern

fromFunc0

from_future

from_iterable

from_list

fromNodeCallback

fromPromise

fromRunnable

Generate

generateWithAbsoluteTime

generateWithRelativeTime

generator

GetEnumerator

getIterator

**GroupBy
**

GroupByUntil

GroupJoin

head

headOption

headOrElse

if

ifThen

**IgnoreElements
**

indexOf

interleave

interpose

**Interval
**

into

isEmpty

items

**Join
**

join
(string)
jortSort

jortSortUntil

**Just
**

keep

keep-indexed

**Last
**

lastOption

LastOrDefault

lastOrElse

Latest

latest
(Rx.rb version of **Switch
**)
length

let

letBind

limit

LongCount

ManySelect

**Map
**

map
(RxClojure version of **Zip
**)
MapCat

mapCat
(RxClojure version of **Zip
**)
map-indexed

map_with_index

**Materialize
**

**Max
**

MaxBy

**Merge
**

mergeAll

merge_concurrent

mergeDelayError

mergeObservable

mergeWith

**Min
**

MinBy

MostRecent

Multicast

nest

**Never
**

Next

Next
(BlockingObservable version)
none

nonEmpty

nth

**ObserveOn
**

ObserveOnDispatcher

observeSingleOn

of

of_array

ofArrayChanges

of_enumerable

of_enumerator

ofObjectChanges

OfType

ofWithScheduler

onBackpressureBlock

onBackpressureBuffer

onBackpressureDrop

OnErrorResumeNext

onErrorReturn

onExceptionResumeNext

orElse

pairs

pairwise

partition

partition-all

pausable

pausableBuffered

pluck

product

**Publish
**

PublishLast

publish_synchronized

publishValue

raise_error

**Range
**

**Reduce
**

reductions

**RefCount
**

**Repeat
**

repeat_infinitely

repeatWhen

**Replay
**

rescue_error

rest

**Retry
**

retry_infinitely

retryWhen

Return

returnElement

returnValue

runAsync

**Sample
**

**Scan
**

scope

Select
(alternate name of **Map
**)
select
(alternate name of **Filter
**)
selectConcat

selectConcatObserver

SelectMany

selectManyObserver

select_switch

selectSwitch

selectSwitchFirst

selectWithMaxConcurrent

select_with_index

seq

**SequenceEqual
**

sequence_eql?

SequenceEqualWith

**Serialize
**

share

shareReplay

shareValue

Single

SingleOrDefault

singleOption

singleOrElse

size

**Skip
**

**SkipLast
**

skipLastWithTime

**SkipUntil
**

skipUntilWithTime

**SkipWhile
**

skip_while_with_index

skip_with_time

slice

sliding

slidingBuffer

some

sort

sort-by

sorted-list-by

split

split-with

**Start
**

startAsync

startFuture

**StartWith
**

stringConcat

stopAndWait

subscribe

**SubscribeOn
**

SubscribeOnDispatcher

subscribeOnCompleted

subscribeOnError

subscribeOnNext

**Sum
**

sumDouble

sumFloat

sumInteger

sumLong

**Switch
**

switchCase

switchIfEmpty

switchLatest

switchMap

switchOnNext

Synchronize

**Take
**

take_with_time

takeFirst

**TakeLast
**

takeLastBuffer

takeLastBufferWithTime

takeLastWithTime

takeRight
(see also: **TakeLast
**
)
**TakeUntil
**

takeUntilWithTime

**TakeWhile
**

take_while_with_index

tail

tap

tapOnCompleted

tapOnError

tapOnNext

**Then
**

thenDo

Throttle

throttleFirst

throttleLast

throttleWithSelector

throttleWithTimeout

**Throw
**

throwError

throwException

**TimeInterval
**

**Timeout
**

timeoutWithSelector

**Timer
**

**Timestamp
**

**To
**

to_a

ToArray

ToAsync

toBlocking

toBuffer

to_dict

ToDictionary

ToEnumerable

ToEvent

ToEventPattern

ToFuture

to_h

toIndexedSeq

toIterable

toIterator

ToList

ToLookup

toMap

toMultiMap

ToObservable

toSet

toSortedList

toStream

ToTask

toTraversable

toVector

tumbling

tumblingBuffer

unsubscribeOn

**Using
**

**When
**

Where

while

whileDo

**Window
**

windowWithCount

windowWithTime

windowWithTimeOrCount

windowed

withFilter

withLatestFrom

**Zip
**

zipArray

zipWith

zipWithIndex

++

+:

:+

上一篇 下一篇

猜你喜欢

热点阅读