为什么AndroidSchedulers.mainThread()给我错误..?

时间:2020-09-29 12:14:11

标签: android kotlin retrofit reactive-programming android-livedata

package com.lalitmali.rxkotlin

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.View

import io.reactivex.Observer
import io.reactivex.disposables.Disposable
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import kotlinx.android.synthetic.main.activity_main.*
import retrofit2.Retrofit
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
import retrofit2.converter.gson.GsonConverterFactory
import java.util.concurrent.TimeUnit

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)


//        Retrofit builder
        val retrofitBuilder=Retrofit.Builder()
            .addConverterFactory(GsonConverterFactory.create())
            .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) // it will convert the retrofit calls into data stream
            .baseUrl("http://worldtimeapi.org")
            .build()

        val timeApi=retrofitBuilder.create(TimeApi::class.java)
        progessbar.visibility=View.VISIBLE




        val time=timeApi.getTime() //this will return our method in interface

        time.subscribeOn(Schedulers.io()) // on rxkotlin thread
            .observeOn(AndroidSchedulers.mainThread())
            .repeatWhen { complete->complete.delay(2,TimeUnit.SECONDS) }   //this function will repeat call
            .subscribe(object:Observer<Time>{ //observer can give result,it can give error also so we will create interface to handle those situation
                override fun onComplete() {
                    Log.e("MainActivity","Completed")
                }

                override fun onSubscribe(d: Disposable) {
                    Log.e("MainActivity","Subscribed")
                }

                override fun onNext(t: Time) {
                    progessbar.visibility=View.INVISIBLE
                    txtTime.text=t.unixtime
                 
                }

                override fun onError(e: Throwable) {
                    Log.e("MainActivity","Error")
                }

            })  
    }
}`
  1. 我在AndroidSchedulers.mainThread()中出错。帮助我克服 如果我按alt + enter则建议我创建一个新功能

       //    RxKotlin    implementation "io.reactivex.rxjava3:rxkotlin:3.0.0" //    RxAndroid   
    

    实现'io.reactivex.rxjava3:rxandroid:3.0.0' //改版实现“ com.squareup.retrofit2:retrofit:2.9.0”实现 “ com.squareup.retrofit2:converter-gson:2.9.0”实现 'com.squareup.retrofit2:adapter-rxjava2:2.6.2'

0 个答案:

没有答案