Я пытаюсь настроить 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
Чего мне не хватает? Или я просто неправильно использую функцию приостановки для получения данных?