舉報

會員
Learning RxJava
最新章節:
Understanding Schedulers
TheprimaryaudienceforthisbookisdeveloperswithatleastafundamentalmasteryofJava.SomereaderswilllikelybeinterestedinRxJavatomakeprogramsmoreresilient,concurrent,andscalable.Othersmaybecheckingoutreactiveprogrammingjusttoseewhatitisallabout,andtojudgewhetheritcansolveanyproblemstheymayhave.
目錄(257章)
倒序
- coverpage
- Title Page
- Credits
- About the Author
- Acknowledgements
- About the Reviewers
- www.PacktPub.com
- Customer Feedback
- Preface
- What this book covers
- What you need for this book
- Who this book is for
- Conventions
- Reader feedback
- Customer support
- Downloading the example code
- Errata
- Piracy
- Questions
- Thinking Reactively
- A brief history of ReactiveX and RxJava
- Thinking reactively
- Why should I learn RxJava?
- What we will learn in this book?
- Setting up
- Navigating the Central Repository
- Using Gradle
- Using Maven
- A quick exposure to RxJava
- RxJava 1.0 versus RxJava 2.0 - which one do I use?
- When to use RxJava
- Summary
- Observables and Subscribers
- The Observable
- How Observables work
- Using Observable.create()
- Using Observable.just()
- The Observer interface
- Implementing and subscribing to an Observer
- Shorthand Observers with lambdas
- Cold versus hot Observables
- Cold Observables
- Hot Observables
- ConnectableObservable
- Other Observable sources
- Observable.range()
- Observable.interval()
- Observable.future()
- Observable.empty()
- Observable.never()
- Observable.error()
- Observable.defer()
- Observable.fromCallable()
- Single Completable and Maybe
- Single
- Maybe
- Completable
- Disposing
- Handling a Disposable within an Observer
- Using CompositeDisposable
- Handling Disposal with Observable.create()
- Summary
- Basic Operators
- Suppressing operators
- filter()
- take()
- skip()
- takeWhile() and skipWhile()
- distinct()
- distinctUntilChanged()
- elementAt()
- Transforming operators
- map()
- cast()
- startWith()
- defaultIfEmpty()
- switchIfEmpty()
- sorted()
- delay()
- repeat()
- scan()
- Reducing operators
- count()
- reduce()
- all()
- any()
- contains()
- Collection operators
- toList()
- toSortedList()
- toMap() and toMultiMap()
- collect()
- Error recovery operators
- onErrorReturn() and onErrorReturnItem()
- onErrorResumeNext()
- retry()
- Action operators
- doOnNext() doOnComplete() and doOnError()
- doOnSubscribe() and doOnDispose()
- doOnSuccess()
- Summary
- Combining Observables
- Merging
- Observable.merge() and mergeWith()
- flatMap()
- Concatenation
- Observable.concat() and concatWith()
- concatMap()
- Ambiguous
- Zipping
- Combine latest
- withLatestFrom()
- Grouping
- Summary
- Multicasting Replaying and Caching
- Understanding multicasting
- Multicasting with operators
- When to multicast
- Automatic connection
- autoConnect()
- refCount() and share()
- Replaying and caching
- Replaying
- Caching
- Subjects
- PublishSubject
- When to use Subjects
- When Subjects go wrong
- Serializing Subjects
- BehaviorSubject
- ReplaySubject
- AsyncSubject
- UnicastSubject
- Summary
- Concurrency and Parallelization
- Why concurrency is necessary
- Concurrency in a nutshell
- Understanding parallelization
- Introducing RxJava concurrency
- Keeping an application alive
- Understanding Schedulers
- Computation
- IO
- New thread
- Single
- Trampoline
- ExecutorService
- Starting and shutting down Schedulers
- Understanding subscribeOn()
- Nuances of subscribeOn()
- Understanding observeOn()
- Using observeOn() for UI event threads
- Nuances of observeOn()
- Parallelization
- unsubscribeOn()
- Summary
- Switching Throttling Windowing and Buffering
- Buffering
- Fixed-size buffering
- Time-based buffering
- Boundary-based buffering
- Windowing
- Fixed-size windowing
- Time-based windowing
- Boundary-based windowing
- Throttling
- throttleLast() / sample()
- throttleFirst()
- throttleWithTimeout() / debounce()
- Switching
- Grouping keystrokes
- Summary
- Flowables and Backpressure
- Understanding backpressure
- An example that needs backpressure
- Introducing the Flowable
- When to use Flowables and backpressure
- Use an Observable If...
- Use a Flowable If...
- Understanding the Flowable and Subscriber
- The Subscriber
- Creating a Flowable
- Using Flowable.create() and BackpressureStrategy
- Turning an Observable into a Flowable (and vice-versa)
- Using onBackpressureXXX() operators
- onBackPressureBuffer()
- onBackPressureLatest()
- onBackPressureDrop()
- Using Flowable.generate()
- Summary
- Transformers and Custom Operators
- Transformers
- ObservableTransformer
- FlowableTransformer
- Avoiding shared state with Transformers
- Using to() for fluent conversion
- Operators
- Implementing an ObservableOperator
- FlowableOperator
- Custom Transformers and operators for Singles Maybes and Completables
- Using RxJava2-Extras and RxJava2Extensions
- Summary
- Testing and Debugging
- Configuring JUnit
- Blocking subscribers
- Blocking operators
- blockingFirst()
- blockingGet()
- blockingLast()
- blockingIterable()
- blockingForEach()
- blockingNext()
- blockingLatest()
- blockingMostRecent()
- Using TestObserver and TestSubscriber
- Manipulating time with the TestScheduler
- Debugging RxJava code
- Summary
- RxJava on Android
- Creating the Android project
- Configuring Retrolambda
- Configuring RxJava and friends
- Using RxJava and RxAndroid
- Using RxBinding
- Other RxAndroid bindings libraries
- Life cycles and cautions using RxJava with Android
- Summary
- Using RxJava for Kotlin New
- Why Kotlin?
- Configuring Kotlin
- Configuring Kotlin for Gradle
- Configuring Kotlin for Maven
- Configuring RxJava and RxKotlin
- Kotlin basics
- Creating a Kotlin file
- Assigning properties and variables
- Extension functions
- Kotlin lambdas
- Extension operators
- Using RxKotlin
- Dealing with SAM ambiguity
- Using let() and apply()
- Using let()
- Using apply()
- Tuples and data classes
- Future of ReactiveX and Kotlin
- Summary
- Appendix
- Introducing lambda expressions
- Making a Runnable a lambda
- Making a Supplier a lambda
- Making a Consumer a lambda
- Making a Function a lambda
- Functional types
- Mixing object-oriented and reactive programming
- Materializing and Dematerializing
- Understanding Schedulers 更新時間:2021-07-02 22:23:29
推薦閱讀
- Extending Jenkins
- C語言程序設計案例教程(第2版)
- Mastering Apache Spark 2.x(Second Edition)
- Oracle從入門到精通(第5版)
- Asynchronous Android Programming(Second Edition)
- Learning ArcGIS for Desktop
- Unity UI Cookbook
- Visual C++程序設計與項目實踐
- Mastering Machine Learning with R
- 一覽眾山小:ASP.NET Web開發修行實錄
- Microsoft XNA 4.0 Game Development Cookbook
- 開源網絡地圖可視化:基于Leaflet的在線地圖開發
- 流暢的Python
- Spring Microservices
- Python算法交易實戰
- Test-Driven Java Development(Second Edition)
- Drupal 7 Development by Example Beginner’s Guide
- Python學習手冊(原書第4版)
- web2py Application Development Cookbook
- Python算法設計與分析
- C語言開發從入門到精通
- LabVIEW虛擬儀器設計及應用:程序設計、數據采集、硬件控制與信號處理
- CMake Cookbook
- Natural Language Processing with TensorFlow
- PHP和MySQL Web應用開發
- 自動化運維軟件設計實戰
- Java Web輕量級開發全體驗
- Raspberry Pi Super Cluster
- C++ 黑客編程揭秘與防范(第3版)
- 滾雪球學Python