Spanish [SOLUCIONADO] (B4A) ¿Se puede poner un "Sub JobDone" en un módulo de código?

Seneca

Active Member
Licensed User
Hola.

He creado un módulo de código y en él he situado el siguiente código:

B4X:
'Esto está en un módulo de código
Sub CargaArchivo (nombre As String )
    Dim job As HttpJob
    job.Initialize(nombre, Main) 'nombre del archivo pasado como parámetro
    job.Download("http://www.miservidor/" & archivo)
End Sub

El correspondiente JobDone lo he colocado en el módulo Main, por eso lo de job.Initialize(nombre, Main)

B4X:
'Eso está en el módulo Main
Sub JobDone(Job As HttpJob)
    If Job.Success Then
        Dim out As OutputStream
        out = File.OpenOutput(File.DirDefaultExternal,Job.JobName,False )
        File.Copy2(Job.GetInputStream, out)
        out.Close
        Log ("*** Cargado " & Job.JobName)
    Else
        Log("### No Cargado " & Job.JobName)
    End If
    Job.Release
End Sub

Mi duda es si el JobDone puedo trasladarlo también al módulo de código. En ese caso no sé qué habría de colocar en en lugar de Main en el código job.Initialize(nombre, Main).

Gracias.
 

dar2o3

Active Member
Licensed User
Longtime User
En un módulo de código no te funcionará, lo mejor es siempre que se pueda hacerlo en un servicio, veamos por que:

1º Si lo haces en el main (por ejemplo) que pasa si el usuario sale/cambia de pantalla de la aplicación antes de que se ejecute el jobdone?

2º Ejecutándolo en un servicio, no importa si lo que te vas a descargar ocupa/tarda mucho o poco, el usuario podrá seguir trabajando con tu aplicación.

3º Ejecutándolo en un servicio, puedes comenzar la descarga en segundo plano o dejar el servicio funcionando siempre y compruebe cada cierto tiempo si hay nuevas descargas/actualizaciones, lo mas recomendable en este caso y si tienes control sobre el servidor, es que envíes un mensaje push a la aplicación avisándote de que hay cambios y así no tienes que andar comprobando cada cierto tiempo si hay o no cambios en los archivos que quieres descargar, con el consiguiente ahorro de batería y datos.

Seguro que hay otros muchos casos, pero espero haberte convencido con los expuestos.
 

Seneca

Active Member
Licensed User
Hola.

Perfecta la aclaración que me has hecho dar2o3. En otra consulta anterior ya me aconsejó el usuario bgsoft que lo hiciese en un servicio. Lo que pasa es que ese trabajo lo quiero hacer un poco más adelante y mientras tanto estaba intentando poner un poco en orden el código actual.

Seguiré vuestras indicaciones.

Gracias.
 
Top