Spanish Impedir que un servicio cierre o finalice.

carlos7000

Active Member
Licensed User
Longtime User
Hola a todos.

Estoy tratando de crear una sencilla aplicación que monitoree el valor del Bitcoin. Dicha aplicación debe trabajar continuamente y no cerrase. El problema es que después de varias horas Android cierra el servicio y pierdo los avisos.

Este es el esqueleto que se supone debería impedir que el servicio deje de funcionar y sobre el cual corre el código que monitorea el valor del Bitcoin

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

Sub Process_Globals

End Sub

Sub Service_Create
    'This is the program entry point.
    'This is a good place to load resources that are not specific to a single activity.
End Sub

Sub Service_Start (StartingIntent As Intent)
    StartServiceAt(Me, DateTime.Now + (60 * DateTime.TicksPerSecond), True )
End Sub

Sub Service_TaskRemoved
    StartServiceAt(Me, DateTime.Now + (60 * DateTime.TicksPerSecond), True )
End Sub

'Return true to allow the OS default exceptions handler to handle the uncaught exception.
Sub Application_Error (Error As Exception, StackTrace As String) As Boolean
    StartServiceAt(Me, DateTime.Now + (60 * DateTime.TicksPerSecond), True )
End Sub

Sub Service_Destroy
    StartServiceAt(Me, DateTime.Now + (60 * DateTime.TicksPerSecond), True )
End Sub

El programa lo tengo instalado en una tableta con Android 5.6 Esto, para aprovechar un equipo en desuso.

Saludos
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola Carlos:

Yo empleo lo que tu has puesto del
B4X:
  #StartCommandReturnValue: android.app.Service.START_STICKY
Y cuando borro la memoria a veces Android lo mata, pero al rato lo vuelve a poner en marcha, si aun asi no lo hace puedes utilizar el Service.StartForeground como bien dice Edgar
Mirate esto: https://www.b4x.com/android/forum/threads/b4a-tutorial-módulos-de-servicio.42689/
El problema es que tendras un icono en la barra de estado (doy una solución en el turorial para que no salga)

Aunque yo lo que haria, seria crear un módulo de servicio nuevo (Proyecto/Añadir Nuevo Módulo/Módulo de Servicio) copiar ese código del starter al nuevo módulo de servicio, y eliminar starter del proyecto. por que el servicio starter a veces da problemas. Yo tengo servicios en muchas aplicaciones y funcionan, pero eso si, los saqué de starter :D

Saludos
 

carlos7000

Active Member
Licensed User
Longtime User
Hola Carlos:

Yo empleo lo que tu has puesto del
B4X:
  #StartCommandReturnValue: android.app.Service.START_STICKY
Y cuando borro la memoria a veces Android lo mata, pero al rato lo vuelve a poner en marcha, si aun asi no lo hace puedes utilizar el Service.StartForeground como bien dice Edgar
Mirate esto: https://www.b4x.com/android/forum/threads/b4a-tutorial-módulos-de-servicio.42689/
El problema es que tendras un icono en la barra de estado (doy una solución en el turorial para que no salga)

Aunque yo lo que haria, seria crear un módulo de servicio nuevo (Proyecto/Añadir Nuevo Módulo/Módulo de Servicio) copiar ese código del starter al nuevo módulo de servicio, y eliminar starter del proyecto. por que el servicio starter a veces da problemas. Yo tengo servicios en muchas aplicaciones y funcionan, pero eso si, los saqué de starter :D

Saludos

Hola Bgsoft

Que pena contestar tan tarde. :oops:

Nuevamente estoy en el mismo problema. Al cerrar la aplicación, el servicio finaliza.

No coloque el Service.StartForeground porque según entiendo ahora al cargarse un servicio, automáticamente esta configurado como Service.StartForeground. Como aún asi el problema persiste, lo coloqué, pero aun así el servicio se cierra.

No se si lo estoy haciendo mal.
 
Top