首页 > 解决方案 > 订阅功能不起作用

问题描述

我正在尝试 RxJava2 的基础知识。

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_vogella)
        setSupportActionBar(toolbar)

        val todoObserverable= createObservable();


        try {
            todoObserverable
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe ({ t-> Log.e(TAG,t.title)}, {e-> Log.e(TAG,e.localizedMessage)})

        }catch (e:Exception){
            e.printStackTrace()
        }

            }

获取可观察函数:

 fun createObservable():Observable<Book>{

        val bookObservable: Observable<Book> = Observable.create { object :ObservableOnSubscribe<Book>{

            override fun subscribe(emitter: ObservableEmitter<Book>) {

                Log.e(TAG,"anc")

                try {
                    val bookArrayList:ArrayList<Book> = ArrayList()
                    val bookOne= Book("XYZ")
                    val bookTwo= Book("ANC")
                    val bookThree= Book("3ewrXYZ")
                    val bookFour= Book("XwerweYZ")

                    bookArrayList.add(bookOne)
                    bookArrayList.add(bookTwo)
                    bookArrayList.add(bookThree)
                    bookArrayList.add(bookFour)

                    for (todo in bookArrayList){
                        emitter.onNext(todo)
                        Log.e(TAG,"on next")
                    }
                    emitter.onComplete()


                }catch (e:Exception){
                    e.printStackTrace()
                }
            }

        }
        }

        return bookObservable;

    }

但我无法打印书名。它没有给我任何错误或异常。我试图调试 createObservable() 但光标没有进入订阅函数。任何提示都会有所帮助。

标签: kotlinschedulerrx-java2

解决方案


Observable.create { object :ObservableOnSubscribe<Book>{- 这实质上是ObservableOnSubscribeObservableOnSubscribe. 对象声明是多余的,或者您可以删除 lambda 定义。( Observable.create(object : ETC))


推荐阅读