Что такое замена анко бг? - PullRequest
1 голос
/ 15 мая 2019

Я использую функцию anko bg для управления фоновой задачей.

Код выглядит следующим образом

import com.github.kittinunf.fuel.core.FuelError
import com.github.kittinunf.fuel.core.Request
import com.github.kittinunf.fuel.core.Response
import com.github.kittinunf.result.Result
import org.jetbrains.anko.coroutines.experimental.bg

object AuthenticationService {
    suspend fun login(login: Login): Triple<Request, Response, Result<GenResponse, FuelError>> {
        return bg {
            HttpService.post<GenResponse>("/auth/login",login.toJsonString())
        }.await()
    }
}

он показывает, что bg устарела и просит меня использовать async(block)

как заменить эту фоновую задачу асинхронной?

Ответы [ 4 ]

1 голос
/ 15 мая 2019

Вы не должны использовать никакую замену для bg, потому что Fuel поддерживает асинхронный HTTP.Вам не нужен фоновый поток для выполнения запросов.Кроме того, у Fuel есть первоклассная поддержка сопрограмм .

1 голос
/ 15 мая 2019

Рассмотрите возможность создания собственных ThreadPoolExecutor s для различных фоновых задач и использования их в качестве сопрограммных диспетчеров.

И вы всегда можете взглянуть на Anko bg исходный код для справки.

0 голосов
/ 15 мая 2019

Другой подход

suspend fun login(login: Login): Triple<Request, Response, Result<GenResponse, FuelError>> {
        return withContext(Dispatchers.Default) {
            HttpService.postNoAuth<GenResponse>("/auth/login", login.toJsonString())
        }
    }
0 голосов
/ 15 мая 2019

согласно информации, вы должны просто заменить его асинхронным сопрограммой. Вероятно, что-то из строк:

return async(Dispatchers.IO) {
            HttpService.post<GenResponse>("/auth/login",login.toJsonString())
        }.await()

Дайте мне знать, если это поможет:)!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...