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 13/10/11, 16:08:42
Array

[xs_avatar]
frank1986 frank1986 no está en línea
Miembro del foro
 
Fecha de registro: jun 2009
Mensajes: 106
Modelo de smartphone: Samsung Galaxy S3
Tu operador: Vodafone
Problema con hilo en segundo plano

Hola,

¿Qué tal? Veréis tengo un problema, os cuento. Estoy realizando una aplicación en la que, una de las partes, es que se envíe un email en segundo plano con la app minimizada. Estoy utilizando un hilo y todo funciona perfectamente, pero el problema viene en que si el teléfono está bloqueado, el hilo también se bloquea y no hace nada, sólo funciona si el usuario tiene el teléfono desbloqueado y claramente, con la app en segundo plano, pero como ya os digo, si el teléfono está bloqueado, no funciona, no da ningún error, sólo que no hace lo que tiene que hacer, es como si se pausara todo.
¿Cómo lo tendría que hacer? Os pongo cómo tengo echo el hilo:


Ésto es lo que tengo en el onCreate de la aplicación, en el que la función mi_funcion() se ejecuta cada 1 minuto y 30 segundos:

Código:
       final Handler handler = new Handler();
        Timer t = new Timer();
        t.scheduleAtFixedRate(new TimerTask() {
                public void run() {
                        handler.post(new Runnable() {
                                public void run() {
                                mi_funcion();
                                }
                        });
                }
        }, 3000, 1*60*1000+30*1000); //1 minuto y medio
¿Qué es lo que hago mál o cómo lo hago?
Responder Con Cita


  #2  
Viejo 13/10/11, 17:05:41
Array

[xs_avatar]
MaGaRCaN MaGaRCaN no está en línea
Usuario muy activo
 
Fecha de registro: jun 2009
Mensajes: 1,070
Modelo de smartphone: HTC Magic

¿No sería mejor crear un servicio en lugar de un hilo?
Responder Con Cita
  #3  
Viejo 13/10/11, 20:46:36
Array

[xs_avatar]
frank1986 frank1986 no está en línea
Miembro del foro
 
Fecha de registro: jun 2009
Mensajes: 106
Modelo de smartphone: Samsung Galaxy S3
Tu operador: Vodafone
Es que ya lo cambie una vez por un servicio y pasaba exactamente igual, al ostar bloqueado no hacia nada .... ¿cómo tendria que crearlo?
Responder Con Cita
  #4  
Viejo 14/10/11, 14:04:58
Array

[xs_avatar]
frank1986 frank1986 no está en línea
Miembro del foro
 
Fecha de registro: jun 2009
Mensajes: 106
Modelo de smartphone: Samsung Galaxy S3
Tu operador: Vodafone
Nada, que no hay manera, ni con wakelock ni como servicio ni nada ..... Pues nada, no se que hacer .... Tengo el programa terminado y sólo me falta eso, y está muy bien la app, además porque no he visto ninguna que haga lo mismo !!! Pero nada ..... joer
Responder Con Cita
  #5  
Viejo 17/10/11, 11:50:02
Array

[xs_avatar]
frank1986 frank1986 no está en línea
Miembro del foro
 
Fecha de registro: jun 2009
Mensajes: 106
Modelo de smartphone: Samsung Galaxy S3
Tu operador: Vodafone
Lo he cambiado a servicio, y dentro de éste un TimeTask para hacer lo que quiero. Además he añadido en el onCreate principal un WakeLock del tipo PARTIAL_WAKE_LOCK pero pasa lo mismo, al bloquear el teléfono éste se pausa también ...

¿Cómo lo consiguen WhatsApp y demás aplicaciones?
Responder Con Cita
  #6  
Viejo 20/10/11, 00:24:54
Array

[xs_avatar]
kamarilla kamarilla no está en línea
Miembro del foro
 
Fecha de registro: abr 2011
Localización: Bilbao
Mensajes: 347
Modelo de smartphone: Xperia Neo
Tu operador: Orange
Buenas:

ese mismo problema tenia yo con una de mis aplicaciones.

Te doy la explicación de porque es y la solución:

Explicación(sencilla y casera XD):

Cuando un dispositivo android se bloque entra en reposo y los procesos son pausados hasta que el móvil se vuelve a desbloquear, por eso te pasa ese problema.

Solucion:

Forzar que el movil no entre en modo reposo.
-Pros: Tu programa funcionara
-Contras: Come mas bateria.
-Consejo: utiliza el codigo abajo dado para que tu coreo se envie y una vez enviado vuelve a dejar el control de energia en modo. Es decir, haz un adquide() y luego cuando acabes haz un release().


Te recomiendo que te pases por la seccion de power manager del android developers para mas información:

http://developer.android.com/referen...erManager.html

codigo:

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Tiempo");

wl.acquire();
wl.release();

Espero haberte sido de ayuda, cualquier cosa escríbeme aquí o un privado ;)

Edito: Por cierto, si no es totalmente necesario intenta no utilizar esto, es posible que notes un consumo excesivo de batería Yo no encontré otra solución para mi problema y busque mucho ;)

Última edición por kamarilla Día 20/10/11 a las 00:27:49.
Responder Con Cita
Respuesta

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



Hora actual: 00:21:56 (GMT +2)



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

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