Types of Observables
private fun dummyBook() : ArrayList<Book>{
var books = arrayListOf<Book>()
books.add(Book("Why is the snail slow?", "Alex"))
books.add(Book("Clean code", "David"))
return books
}
- Emit empty or multiple item
- Example:
Observable.create<Book> {
it.onNext(Book("Why is the snail slow?", "Alex"))
}.subscribe(object : Observer<Book> {
override fun onComplete() {
println("onComplete")
}
override fun onSubscribe(d: Disposable) {
println("onSubscribe")
}
override fun onNext(t: Book) {
println("onNext: $t")
}
override fun onError(e: Throwable) {
println("error: ${e.message}")
}
})
- Result:
onNext: Book(name=Why is the snail slow?, author=Alex)
- Always emit one item or onError
- Example:
Single.create<Book> {
it.onSuccess(Book("Why is the snail slow?", "Alex"))
}.subscribe(object : SingleObserver<Book> {
override fun onSuccess(t: Book) {
println("success: $t")
}
override fun onSubscribe(d: Disposable) {
}
override fun onError(e: Throwable) {
println("error: ${e.message}")
}
})
- Result:
success: Book(name=Why is the snail slow?, author=Alex)
- Emit one or none item
- Example:
Maybe.create<Book> {
it.onSuccess(Book("Why is the snail slow?", "Alex"))
}.subscribe(object : MaybeObserver<Book> {
override fun onSuccess(t: Book) {
println("success: $t")
}
override fun onComplete() {
println("onComplete")
}
override fun onSubscribe(d: Disposable) {
println("onSubscribe")
}
override fun onError(e: Throwable) {
println("error: ${e.message}")
}
})
- Result:
success: Book(name=Why is the snail slow?, author=Alex)
- Emit none item
- Example:
Completable.create {
it.onComplete()
}.subscribe(object : CompletableObserver{
override fun onComplete() {
println("onComplete")
}
override fun onSubscribe(d: Disposable) {
println("onSubscribe")
}
override fun onError(e: Throwable) {
println("onError: ${e.message}")
}
})
- Result:
System.out: onComplete