Приостановка функции приостановки генерирует общую ошибку - PullRequest
0 голосов
/ 28 июня 2019

Я пытаюсь настроить Retrofit2 с функциями приостановки, но у меня неожиданная ошибка в автономном режиме (все хорошо в онлайн-режиме).

ApiService:

interface ApiService {
    @GET("v2/153")
    suspend fun fetchData(): Response<DataModel>
}

Модифицированный клиент:

fun provideDefaultOkhttpClient(context: Context): OkHttpClient {
    val cacheSize = (5 * 1024 * 1024).toLong()
    return OkHttpClient.Builder()
        .cache(Cache(context.cacheDir, cacheSize))
        .build()
}

fun provideRetrofit(client: OkHttpClient): Retrofit {
    return Retrofit.Builder()
        .client(client)
        .baseUrl(BASE_URL)
        .addConverterFactory(MoshiConverterFactory.create())
        .build()
}

fun provideApiService(retrofit: Retrofit): ApiService =
    retrofit.create(ApiService::class.java)

DataRepository:

class DataRepository(private val api: ApiService) {

    suspend fun getData(): List<DataModel>? {
        val myData = api.fetchData()

        return if (myData.isSuccessful) {
            myData.body()
        } else {
            null
        }
    }
}

При отладке приложения я вижу, что вызывается DataRepository->api.fetchData(), и оттуда он зависает, и я получаю следующую ошибку:

2019-06-28 10:35:46.136 10876-10876/com.myapp.name.debug E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.myapp.name.debug, PID: 10876

Чего мне не хватает? Или я просто неправильно использую функцию приостановки для получения данных?

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