Как сделать асинхронный вызов OkHttp в Android, используя Kotlin? - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь получить данные API с помощью OkHttp, используя внутренний класс, который наследует AsyncTask<Request, Void, Response>. Теперь, когда я пытаюсь инициализировать ответ в методе doInBackground(vararg params: Request?): Response, я вынужден инициализировать объект var response : Response? = null следующим образом, но я не могу установить для него тип null-типа, так как метод doInBackground () ожидает ненулевой Response. В Java инициализация Response не была обязательной. Как мне обойти это?

private class Fake : AsyncTask<Request, Void, Response>() {
        val client : OkHttpClient = OkHttpClient()
        override fun doInBackground(vararg params: Request?): Response{
            // Initialization is compulsory, and cannot be set to Response() as it is not accessible
            var response : Response? = null 
        }

    }

1 Ответ

0 голосов
/ 04 апреля 2020

Как вы упомянули, используя Kotlin, поэтому в этом случае вы можете использовать модификацию, которая работает с HTTP-клиентом, а для выполнения в фоновом потоке используйте сопрограмму.

Она будет выполнять вызов API в фоновом режиме и обновлять Данные по интерфейсу пользователя.

Для получения дополнительной информации изучите сопрограмму

https://proandroiddev.com/using-retrofit-2-with-kotlin-coroutines-cb112f0fb738

...