Запрос на Android всегда дает исключение тайм-аута сокета

Я пытаюсь сделать два запроса, когда пользователь нажимает кнопку. Однако запрос может занять некоторое время.

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

Я сделал образец проекта, чтобы попробовать это, и вы можете найти его здесь .

Я использую retrofit и RxJava, чтобы выполнить мои запросы следующим образом:

networkFactory.request() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( { result -> Log.d("TAG", "The value is this $result") }, { error -> Log.e("TAG", "Ohoh an error ${Log.getStackTraceString(error)}") }) 

Мой запрос networkFactory ():

  fun request(): Observable<Doc> { return service.request(API_KEY) } 

со следующим интерфейсом:

 @GET("articlesearch.json") fun request(@Query("api-key") apiKey : String) : Observable<Doc> 

Я здесь что-то не так?