小编Sem*_*onM的帖子

android 7.1.1(牛轧糖)应用程序待机和网络

当应用程序处于后台时,我需要发出网络呼叫。顺序如下。该应用程序接收GCM调用,向BE发出API调用,以获取更多数据,然后显示通知。完美收到了GCM调用,但是API网络调用由于超时失败而失败,并显示以下内容stack-trace

java.net.SocketTimeoutException: timeout
                                                    at okio.Okio$3.newTimeoutException(Okio.java:207)
                                                    at okio.AsyncTimeout.exit(AsyncTimeout.java:250)
                                                    at okio.AsyncTimeout$2.read(AsyncTimeout.java:217)
                                                    at okio.RealBufferedSource.indexOf(RealBufferedSource.java:306)
                                                    at okio.RealBufferedSource.indexOf(RealBufferedSource.java:300)
                                                    at okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:196)
                                                    at com.squareup.okhttp.internal.http.Http1xStream.readResponse(Http1xStream.java:186)
                                                    at com.squareup.okhttp.internal.http.Http1xStream.readResponseHeaders(Http1xStream.java:127)
                                                    at com.squareup.okhttp.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:737)
                                                    at com.squareup.okhttp.internal.http.HttpEngine.access$200(HttpEngine.java:87)
                                                    at com.squareup.okhttp.internal.http.HttpEngine$NetworkInterceptorChain.proceed(HttpEngine.java:722)
                                                    at com.nuro.newcoms.NuroCommunicationService$21.intercept(NuroCommunicationService.java:1986)
                                                    at com.squareup.okhttp.internal.http.HttpEngine$NetworkInterceptorChain.proceed(HttpEngine.java:695)
                                                    at com.nuro.encryption.NuroSSLContext$1.intercept(NuroSSLContext.java:94)
                                                    at com.squareup.okhttp.internal.http.HttpEngine$NetworkInterceptorChain.proceed(HttpEngine.java:695)
                                                    at com.squareup.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:576)
                                                    at com.squareup.okhttp.Call.getResponse(Call.java:287)
                                                    at com.squareup.okhttp.Call$ApplicationInterceptorChain.proceed(Call.java:243)
                                                    at com.squareup.okhttp.Call.getResponseWithInterceptorChain(Call.java:205)
                                                    at com.squareup.okhttp.Call.execute(Call.java:80)
                                                    at retrofit.client.OkClient.execute(OkClient.java:53)
                                                    at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:326)
                                                    at retrofit.RestAdapter$RestHandler.access$100(RestAdapter.java:220)
                                                    at retrofit.RestAdapter$RestHandler$2.obtainResponse(RestAdapter.java:278)
                                                    at retrofit.CallbackRunnable.run(CallbackRunnable.java:42)
                                                    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
                                                    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
                                                    at java.lang.Thread.run(Thread.java:761)`
Run Code Online (Sandbox Code Playgroud)

我正在使用okhttpver 2.7.5retrofit 1.9.0

该应用程序处于后台,但设备未处于休眠状态,屏幕处于打开状态,甚至正在充电。因此,这不可能是DOZE问题。

发生在WiFi3/4G

pre-nougat 设备没有这个问题。

UPD 在电池设置中将应用程序选择为“未优化”时,所有功能都像超级按钮一样。

networking android android-appstandby android-7.1-nougat

7
推荐指数
0
解决办法
1238
查看次数