У меня есть метод, в котором я хотел бы проверить действительность моего токена через вызов API с Retrofit, и я хочу дождаться результата. Я думал использовать CountDownLatch, но, похоже, countDownLatch.await()
блокирует поток, и ничего не происходит, отладчик не доходит до части onResponse
. Я проверил мой API с Почтальоном, звонок действительно ударил.
Я также нашел этот вопрос, который похож на мою проблему, но он не помог:
CountDownLatch не освобождает поток
var isTokenExpired = false
var countDownLatch = CountDownLatch(1)
val userService = RetrofitClient.getInstance().create(DiaBUserService::class.java)
userService.validate(token).enqueue(object : Callback<JsonObject> {
override fun onResponse(call: Call<JsonObject>, response: Response<JsonObject>) {
isTokenExpired = !response.isSuccessful
countDownLatch.countDown()
}
override fun onFailure(call: Call<JsonObject>, t: Throwable) {
t.printStackTrace()
countDownLatch.countDown()
}
})
try {
countDownLatch.await()
} catch (e: InterruptedException){
e.printStackTrace()
}
return isTokenExpired
Использую ли я что-то не так или есть другой способ получить нужную функцию?