Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #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: 218
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


  #2  
Viejo 26/04/17, 19:48:57
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
Por norma general si quieres que la app haga algo en segundo plano debes usar un WakeLock, esto es así desde los orígenes de Android, si te estaba funcionando bien era de casualidad, porque el envío y recepción lo haría en bloque.

Nougat tiene como novedad modo Doze en movimiento, así que es más normal que la aplicación se duerma en cualquier momento.
Responder Con Cita
  #3  
Viejo 27/04/17, 18:00:26
Array

[xs_avatar]
manolazo manolazo no está en línea
Miembro del foro
 
Fecha de registro: jun 2012
Localización: Madrid
Mensajes: 218
Modelo de smartphone: Samsung Galaxy S7 edge
Tu operador: Pepephone
Vaya, pues no tenia ni idea!!!

Leyendo en SO veo que hay mucha gente que en este tipo de apps con la llegada de Nougat con el tema de Doze les está pasando como a mi, que la app se duerme y manda los datos de pascuas a ramos.

La gente aún usando AlarmManager sigues sin funcionarles como a este tio: https://forums.xamarin.com/discussio...d-alarmmanager


Segun https://developer.android.com/traini...e-standby.html dice:

Restricciones del modo Descanso
Durante el modo Descanso, se aplican las siguientes restricciones a tus apps:

Se suspende el acceso a la red.
El sistema ignora los wake locks.
Las alarmas estándares AlarmManager (incluidas setExact() y setWindow()) se aplazan hasta el siguiente período de mantenimiento.
Si necesitas programar alarmas que se activen en el modo Descanso, usa setAndAllowWhileIdle() o setExactAndAllowWhileIdle().
Las alarmas programadas con setAlarmClock() se activan con normalidad; el sistema desactiva el modo Descanso antes de que esas alarmas se activen.
El sistema no realiza escaneos de Wi-Fi.
El sistema no permite que se ejecuten adaptadores de sincronización.
El sistema no permite que se ejecute JobScheduler.

Tambien pone que hay una opción para desactivar el modo descanso (Doze) de forma manual en Settings > Battery > Battery Optimization. y meter la app en la lista blanca.

Cual seria la mejor manera entonces de que funcionase?
Con un AlarmManager, JobDispatcher o wakelocks desactivando modo descanso??
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 19:52:02 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /