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")
}
})
}
}`
我在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'