Buenas.
Ya comente hace tiempo que una de mis app es de ubicación en la cual se envian los datos de coordenadas entre otras cosas a un servidor cada vez que se actualiza la localización.
Pues bien, después de haber actualizado un S7 a android 7.0 nougat resulta que cuando la app esta en segundo plano o bien se apaga la pantalla del movil , los datos pasados unos 4 minutos no se suben, es como si el movil entrase en modo reposo y pasase de enviar ningun dato. Una vez se enciende la pantalla vuelven a subirse sin problemas. Todo esto no pasa ni con MarshMallow ni con versiones anteriores.
Lo que tengo es un Fragment y los envio a través o bien de Retrofit o por VOlley.
Es curioso que cuando pongo el movil en modo debug para ver los errores , en este caso si funciona correctamente.
He logrado hacer captar el error que provoca esto en el onFailure de Retrofit:
Código:
@override
public void onFailure(Call<Coordenadas_Json_Retrofit> call, Throwable t) {
// Log error here since request failed
String stackTrace = Log.getStackTraceString(t);
textoprueba4.setText(stackTrace);
}
y es este:
Código:
java.net.SocketTimeoutException: connect timed out
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:334)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:196)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356)
at java.net.Socket.connect(Socket.java:586)
at okhttp3.internal.Platform$Android.connectSocket(Platform.java:211)
at okhttp3.internal.io.RealConnection.connectSocket(RealConnection.java:140)
at okhttp3.internal.io.RealConnection.connect(RealConnection.java:111)
at okhttp3.internal.http.StreamAllocation.findConnection(StreamAllocation.java:188)
at okhttp3.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:127)
at okhttp3.internal.http.StreamAllocation.newStream(StreamAllocation.java:97)
at okhttp3.internal.http.HttpEngine.connect(HttpEngine.java:289)
at okhttp3.internal.http.HttpEngine.sendRequest(HttpEngine.java:241)
at okhttp3.RealCall.getResponse(RealCall.java:240)
at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java:198)
at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:160)
at okhttp3.RealCall.access$100(RealCall.java:30)
at okhttp3.RealCall$AsyncCall.execute(RealCall.java:127)
at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
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:762)
Como se ve hay un timeout en la conexión .
He mirado todas las opciones del movil y en 7.0 hay una opción de ahorro de datos en segundo plano , pero lo tengo desactivado y puesta la app como excepción por si las moscas. No se si habrá otra opción aparte de esto que no haya visto!!.
Que puede cortar esto en Nougat?.