Retrofit отправляет несколько запросов
Отправляю запросы через Retrofit. Проблема в том что с каждым последующим нажатием кнопки отправляются несколько запросов(1,3,4,5...). При смене активити сбрасывается до 1. Как сделать чтобы был 1?
object Retrofitinstance {
private val retrofit by lazy {
val okHttpClient = OkHttpClient().newBuilder()
.connectTimeout(180, TimeUnit.SECONDS)
.readTimeout(180, TimeUnit.SECONDS)
.writeTimeout(180, TimeUnit.SECONDS)
.build()
Retrofit.Builder()
.baseUrl(base_url)
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create())
.build()
}
val api: SimpleApi by lazy {
retrofit.create(SimpleApi::class.java)
}
}
.
interface SimpleApi {
@POST("/sdapi/v1/preprocess")
suspend fun pushPostPreproc(
@Body post: preprocess
): Response<preprocess>
}
.
class MainViewModel(private val repository: Repository): ViewModel(){
var myResponsePreproc: MutableLiveData<Response<preprocess>> = MutableLiveData()
fun pushPostPreproc(post: preprocess){
viewModelScope.launch {
val response: Response<preprocess> = repository.pushPostPreproc(post)
myResponsePreproc.value = response
}
}
}
.
class Repository {
suspend fun pushPostPreproc(post: preprocess): Response<preprocess>{
return Retrofitinstance.api.pushPostPreproc(post)
}
}
.
class MainViewModelFactory(
private val repository: Repository
) : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>): T {
return MainViewModel(repository) as T
}
}
.
binding2.createHyperBtn.setOnClickListener {
println("preprocess start")
val repository = Repository()
val vieModelFactory = MainViewModelFactory(repository)
val myPostPreproc = preprocess(1, "images/$name","images/$name/out", 512, 512, "ignore", false, false, true)
viewModel = ViewModelProvider(this, vieModelFactory).get(MainViewModel::class.java)
viewModel.pushPostPreproc(myPostPreproc)
viewModel.myResponsePreproc.observe(this, Observer { response ->
if(response.isSuccessful){
Log.d("Preprocess succesfull ", response.code().toString())
} else{
Log.d("Preprocess ERR", response.toString())
}})
Log
I/System.out: preprocess start
D/NetworkSecurityConfig: No Network Security Config specified, using platform default
D/Preprocess ERR: Response{protocol=h2, code=404, message=, url=https://proud-pants-return-34-142-188-215.loca.lt/sdapi/v1/preprocess}
I/System.out: preprocess start
D/Preprocess ERR: Response{protocol=h2, code=404, message=, url=https://proud-pants-return-34-142-188-215.loca.lt/sdapi/v1/preprocess}
D/Preprocess ERR: Response{protocol=h2, code=404, message=, url=https://proud-pants-return-34-142-188-215.loca.lt/sdapi/v1/preprocess}
D/Preprocess ERR: Response{protocol=h2, code=404, message=, url=https://proud-pants-return-34-142-188-215.loca.lt/sdapi/v1/preprocess}
I/System.out: preprocess start
D/Preprocess ERR: Response{protocol=h2, code=404, message=, url=https://proud-pants-return-34-142-188-215.loca.lt/sdapi/v1/preprocess}
D/Preprocess ERR: Response{protocol=h2, code=404, message=, url=https://proud-pants-return-34-142-188-215.loca.lt/sdapi/v1/preprocess}
D/Preprocess ERR: Response{protocol=h2, code=404, message=, url=https://proud-pants-return-34-142-188-215.loca.lt/sdapi/v1/preprocess}
D/Preprocess ERR: Response{protocol=h2, code=404, message=, url=https://proud-pants-return-34-142-188-215.loca.lt/sdapi/v1/preprocess}
I/System.out: preprocess start
D/Preprocess ERR: Response{protocol=h2, code=404, message=, url=https://proud-pants-return-34-142-188-215.loca.lt/sdapi/v1/preprocess}
D/Preprocess ERR: Response{protocol=h2, code=404, message=, url=https://proud-pants-return-34-142-188-215.loca.lt/sdapi/v1/preprocess}
D/Preprocess ERR: Response{protocol=h2, code=404, message=, url=https://proud-pants-return-34-142-188-215.loca.lt/sdapi/v1/preprocess}
D/Preprocess ERR: Response{protocol=h2, code=404, message=, url=https://proud-pants-return-34-142-188-215.loca.lt/sdapi/v1/preprocess}
D/Preprocess ERR: Response{protocol=h2, code=404, message=, url=https://proud-pants-return-34-142-188-215.loca.lt/sdapi/v1/preprocess}
Источник: Stack Overflow на русском