Spanish no puedo leer correos en segundo plano

jluisruelas

Member
Licensed User
Longtime User
amigos tengo un problema, es que tengo un programa que al recibir un correo extrae el asunto y en base a el toma una desicion, sin embargo cuando pongo el mismo codigo en un servicio en el servicio no hace nada. uso pop3 para leer los correos
saludos
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola

Sin mas datos es dificil saber el problema. Como llamas al servicio y que tienes en el Service_Start

saludos
 

jluisruelas

Member
Licensed User
Longtime User
ya lo solucione amigos el problema radicaba en que en el main y el service corria el mismo procedimiento, una pregunta: como se puede arrancar un servicio solo cuando la aplicacion entre en segundo plano? y otra ¿puede detectarse cuando la aplicacion entra en segundo plano?
 

Descartex

Well-Known Member
Licensed User
Longtime User
yo uso el activity_pause para ver si paso a segundo plano. desde ahí puedes saber si lo mandaste tu o se fue solo.
un saludo
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola

Creo que tendrias que leerte el ciclo de vida de Android, y asi entenderias mejor como has de hacerlo, puedes verlo aqui:

http://www.b4x.com/android/forum/threads/android-process-and-activities-life-cycle.6487/#post37980

Te digo de modo rápido cual es el ciclo:

ARRANCA LA APLICACIÓN -> Activity_Create (FirstTime = True) -> Resume
GIRAS LA PANTALLA -> Pause (Userclosed=False) -> Activity_Create (FirstTime = False) -> Resume
SALES MATANDO APLICACION CON Activity.Finish -> Pause (Userclosed=True)
SALES PULSANDO BOTÓN HOME (botón hard central) -> Pause (Userclosed=False)
VUELVES DESPUES DE PULSAR BOTÓN HOME -> Resume
LLAMAS A OTRO ACTIVITY DESDE Main -> Main va a Pause (Userclosed=False)
VUELVES DESDE OTRO ACTIVITY -> Main va a Resume
ENTRAS EN LA PANTALLA DE CONFIGURACION (PreferenceActivity library) -> Main va a Pause (Userclosed=False)
SALES DE LA PANTALLA DE CONFIGURACION (PreferenceActivity library) -> Main va a Resume

Bueno, no se si se me olvida alguno.

Como bien dice Descartex puedes hacerlo desde Pause, pero tendrás que tener en cuenta el motivo de entrar en Pause, por que si solo miras que el Userclosed sea True, cuando salgas de la aplicacion por pulsar el botón de home, el Userclosed es igual a False. Y tengo una mala noticia, no hay forma de detectar el botón home hard, esto lo verás en el capitulo 18.6 de la guia para principiantes.

Aqui tienes un tutorial para principiantes:
http://www.b4x.com/android/forum/threads/beginners-guide.9578/

Aqui todos los tutoriales:
http://www.b4x.com/android/forum/forums/tutorials-examples.27/

Aqui una presentación PowerPoint en castellano:
http://www.b4x.com/android/forum/threads/material-para-un-curso.10793/

Saludos
 

jluisruelas

Member
Licensed User
Longtime User
Hola

Creo que tendrias que leerte el ciclo de vida de Android, y asi entenderias mejor como has de hacerlo, puedes verlo aqui:

http://www.b4x.com/android/forum/threads/android-process-and-activities-life-cycle.6487/#post37980

Te digo de modo rápido cual es el ciclo:

ARRANCA LA APLICACIÓN -> Activity_Create (FirstTime = True) -> Resume
GIRAS LA PANTALLA -> Pause (Userclosed=False) -> Activity_Create (FirstTime = False) -> Resume
SALES MATANDO APLICACION CON Activity.Finish -> Pause (Userclosed=True)
SALES PULSANDO BOTÓN HOME (botón hard central) -> Pause (Userclosed=False)
VUELVES DESPUES DE PULSAR BOTÓN HOME -> Resume
LLAMAS A OTRO ACTIVITY DESDE Main -> Main va a Pause (Userclosed=False)
VUELVES DESDE OTRO ACTIVITY -> Main va a Resume
ENTRAS EN LA PANTALLA DE CONFIGURACION (PreferenceActivity library) -> Main va a Pause (Userclosed=False)
SALES DE LA PANTALLA DE CONFIGURACION (PreferenceActivity library) -> Main va a Resume

Bueno, no se si se me olvida alguno.

Como bien dice Descartex puedes hacerlo desde Pause, pero tendrás que tener en cuenta el motivo de entrar en Pause, por que si solo miras que el Userclosed sea True, cuando salgas de la aplicacion por pulsar el botón de home, el Userclosed es igual a False. Y tengo una mala noticia, no hay forma de detectar el botón home hard, esto lo verás en el capitulo 18.6 de la guia para principiantes.

Aqui tienes un tutorial para principiantes:
http://www.b4x.com/android/forum/threads/beginners-guide.9578/

Aqui todos los tutoriales:
http://www.b4x.com/android/forum/forums/tutorials-examples.27/

Aqui una presentación PowerPoint en castellano:
http://www.b4x.com/android/forum/threads/material-para-un-curso.10793/

Saludos
gracias por tu respuesta, y cuando el telefono se bloquea, ¿cual se usa?
 

Descartex

Well-Known Member
Licensed User
Longtime User
A Pause con UserClosed a false y luego vuelve a resume cuando desbloqueas.
 

jluisruelas

Member
Licensed User
Longtime User
A Pause con UserClosed a false y luego vuelve a resume cuando desbloqueas.
ok amigo, entonces dime si estoy correcto, lo que yo necesito es que el codigo se este ejecutando siempre, por lo tanto puedo hacer un codigo para que se ejecute cuando la aplicacion este activa y otro cuando este en segundo plano? tambien a que se debe que la aplicacion funciona en segundo plano solo un tiempo determinado despues, para poder que funcione tengo que desbloquear el telefono manualmente
 

Descartex

Well-Known Member
Licensed User
Longtime User
Muy buenas,

Lo que puedes hacer es un servicio, que se inicie y se ejecute cuando la aplicacion esté en segundo plano y que se pare cuando la aplicación tome el control.
Con los método StartActivity y StopActivity puedes hacerlo, insertandolos en los Activity_Resume,Activity_Pause y haciendo las comprobaciones que te hemos comentado para saber si sales tu, si sale el programa, si se bloquea el terminal...
Eso si, has de comprobar en el Service_Destroy a ver si guardas lo que tengas pendiente antes de cerrar el servicio.

Otra cosa que podrías hacer es un servicio que se ejecute siempre, pero con una variable booleana que se controle si el programa está arrancado, por si quieres que, cuando el programa esté arrancado, no ejecute código.

Espero no haberte liado más, un saludo.
 
Top