Android中的请求总是给出套接字超时异常

Android中的请求总是给出套接字超时异常,android,kotlin,retrofit2,rx-java2,Android,Kotlin,Retrofit2,Rx Java2,当用户单击按钮时,我尝试发出两个请求。 但是,请求可能需要一些时间 当用户处于电池节省模式,并且在请求仍在执行时屏幕锁定其设备时,请求将不会完成,并将发出套接字超时异常 我做了一个样本项目来尝试这个,你可以找到它 我使用改型和RxJava提出如下请求: networkFactory.request() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainTh

当用户单击按钮时,我尝试发出两个请求。 但是,请求可能需要一些时间

当用户处于电池节省模式,并且在请求仍在执行时屏幕锁定其设备时,请求将不会完成,并将发出套接字超时异常

我做了一个样本项目来尝试这个,你可以找到它

我使用改型和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请求():可观察{
返回服务请求(API_密钥)
}
使用以下界面:

@GET("articlesearch.json")
fun request(@Query("api-key") apiKey : String) : Observable<Doc>
@GET(“articlesearch.json”)
趣味请求(@Query(“api键”)apiKey:String):可观察

我做错什么了吗

似乎是因为我明白了,但打瞌睡不应该在一段时间后被踢吗?我的意思是,我认为Android上的O在屏幕关闭后立即被踢出,但在棉花糖中它也适用?你提到的
当用户处于电池节省模式时
似乎使其限制性更强,其余我不是100%确定哦,是的,但我如何提出可行的请求?当用户使用应用程序时,Doze会启动并切断internet连接。从用户的角度来看,如果他电池电量不足,想要听音乐,例如,他将不知道应用程序停止工作的原因,并会责怪有故障的应用程序……您可以对此进行调查
@GET("articlesearch.json")
fun request(@Query("api-key") apiKey : String) : Observable<Doc>