Spanish Mensajes push (servicios?)

Espinosa4

Active Member
Licensed User
Longtime User
Hola a todos,

Estoy intentado hacer una pequeña aplicación que se conecte a una base de datos y devuelva unos valores cada x tiempo. El problema es que android cierra la aplicación y ya no sé que hacer más.

He usado #StartAtBoot: True
service.startforeground.......

Al final, siempre android acaba matándolo o da un error.
Opciones que me han dado, era el sticky services pero parace que con android 5 o superior no funciona. Al usar startforeground me aparece en el área de notificaciones un mensajes que no puedo quitar de que mi aplicación se está ejecutando y ahí se queda.

Me gustaría que fuera como el whatsapp. Ninguna notificación ni icono visible y que luego saliera la notificación de turno y que se pudiera eliminar.

Sabríais decirme cómo lo puedo hacer?
Algún ejemplo?

Mil gracias
Espinosa

Adjunto el código por si le queréis dar un vistazo.
 

Attachments

  • Notificaciones.zip
    22.1 KB · Views: 364

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola

Elimina el starter y pon el código en un módulo de servicio nuevo, y añade esto:

B4X:
#Region  Service Attributes
    #StartAtBoot: True
    #StartCommandReturnValue: android.app.Service.START_STICKY

Puede que Android te mate el servicio, pero lo volverá a poner en marcha en pocos segundos.
Mirate esto:
https://www.b4x.com/android/forum/threads/b4a-tutorial-módulos-de-servicio.42689/

Quita el temporizador del servicio, a veces da problemas, y cambialo por esto:

B4X:
Sub Service_Start (StartingIntent As Intent)
StartServiceAt("", DateTime.Now + (Tiempo * DateTime.TicksPerMinute), True)

Ahh, para que entre el servicio debes llamarlo, por ponerlo en el #StartAtBoot: True entrará pero cuando reinicies el dispositivo.

B4X:
StartService(NombreDelServicio) ‘ Llamar al Servicio

StopService(NombreDelServicio) ‘ matar el Servicio

CancelScheduledService(NombreDelServicio)  ' Para si has realizado un StartServiceAt


Saludos
 
Last edited:

Espinosa4

Active Member
Licensed User
Longtime User
Hola

Elimina el starter y pon el código en un módulo de servicio nuevo, y añade esto:

B4X:
#Region  Service Attributes
    #StartAtBoot: True
    #StartCommandReturnValue: android.app.Service.START_STICKY

Puede que Android te mate el servicio, pero lo volverá a poner en marcha en pocos segundos.
Mirate esto:
https://www.b4x.com/android/forum/threads/b4a-tutorial-módulos-de-servicio.42689/

Quita el temporizador del servicio, a veces da problemas, y cambialo por esto:

B4X:
Sub Service_Start (StartingIntent As Intent)
StartServiceAt("", DateTime.Now + (Tiempo * DateTime.TicksPerMinute), True)

Ahh, para que entre el servicio debes llamarlo, por ponerlo en el #StartAtBoot: True entrará pero cuando reinicies el dispositivo.

B4X:
StartService(NombreDelServicio) ‘ Llamar al Servicio

StopService(NombreDelServicio) ‘ matar el Servicio

CancelScheduledService(NombreDelServicio)  ' Para si has realizado un StartServiceAt


Saludos
Infinitas gracias bgsoft!!

Lo pruebo y comento. La verdad es que voy dando palos de ciego con este tema.

Gracias por responder y gracias por las aclaraciones.

Un saludo!
 

Espinosa4

Active Member
Licensed User
Longtime User
Buenos días bgsoft!

He probado el código como comentas. Lo ejecuté ayer y aún sigue running. Infinitas gracias!

Ahora tengo una duda, en el área de notificaciones está siempre activo un aviso de que se está ejecutando el servicio. Eso no se puede quitar?

Me sale esto.
Un saludo y gracias por todo nuevamente.
 

Attachments

  • PSX_20161220_095235.jpg
    PSX_20161220_095235.jpg
    73.7 KB · Views: 410

bgsoft

Well-Known Member
Licensed User
Longtime User
Buenos días bgsoft!

He probado el código como comentas. Lo ejecuté ayer y aún sigue running. Infinitas gracias!

Ahora tengo una duda, en el área de notificaciones está siempre activo un aviso de que se está ejecutando el servicio. Eso no se puede quitar?

Me sale esto.
Un saludo y gracias por todo nuevamente.

Me alegro que te funcione.

La notificación para que se quite, tienes que cancelarla, puedes hacerlo cuando entres en Main, por ejemplo así:
B4X:
Sub Activity_Resume

NombreNotificacion.Cancel(Id Notificacion)
...

Saludos
 

Espinosa4

Active Member
Licensed User
Longtime User
Me alegro que te funcione.

La notificación para que se quite, tienes que cancelarla, puedes hacerlo cuando entres en Main, por ejemplo así:
B4X:
Sub Activity_Resume

NombreNotificacion.Cancel(Id Notificacion)
...

Saludos
Muchas gracias de nuevo bgsoft!
Sigo haciendo pruebas y voy comentando.

Saludos!!!!
 
Top