Ver Mensaje Individual
  #1  
Viejo 25/04/17, 22:44:53
Array

[xs_avatar]
manolazo manolazo no está en línea
Miembro del foro
 
Fecha de registro: jun 2012
Localización: Madrid
Mensajes: 219
Modelo de smartphone: Samsung Galaxy S7 edge
Tu operador: Pepephone
Connect time out en Android 7.0 ?

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?.
Responder Con Cita