Hola buenos días,
Según entiendo el funcionamiento de los JobDone, es que estos se ejecutan de forma automática sin ser llamados.
En mi caso puntal estoy haciendo una aplicación, la cual tiene una base de datos interna, que al abrir la app es "pisada" por una base online que tiene la misma estructura, pero distintos datos.
Es decir que con un HttpJob, obtengo los datos de la base online, borro los datos de la interna e ingreso los datos de la base descargada, esto es para mantener la base actualizada, y si el usuario no tiene conexión a internet (lo que impedirá ejecutar el HttpJob) por lo menos muestre los datos de la ultima base de datos descargada.
No busco y muestro los datos de la base online directamente porque si el usuario no tiene conexión la aplicación no muestra ninguna información, es por eso que prefiero siempre descargar la base y pisar la existente en caso q tenga conexión, y sino mostrar la ultima descargada.
El problema que tengo, es que necesito que el JobDone se ejecute primero , sino la aplicación empieza a recorrer los datos de la base interna antes de borrarla, lo que no hace que no se muestren los datos actualizados.
¿Alguien sabe como hacerlo? Desde ya muchas gracias por su tiempo
Según entiendo el funcionamiento de los JobDone, es que estos se ejecutan de forma automática sin ser llamados.
En mi caso puntal estoy haciendo una aplicación, la cual tiene una base de datos interna, que al abrir la app es "pisada" por una base online que tiene la misma estructura, pero distintos datos.
Es decir que con un HttpJob, obtengo los datos de la base online, borro los datos de la interna e ingreso los datos de la base descargada, esto es para mantener la base actualizada, y si el usuario no tiene conexión a internet (lo que impedirá ejecutar el HttpJob) por lo menos muestre los datos de la ultima base de datos descargada.
No busco y muestro los datos de la base online directamente porque si el usuario no tiene conexión la aplicación no muestra ninguna información, es por eso que prefiero siempre descargar la base y pisar la existente en caso q tenga conexión, y sino mostrar la ultima descargada.
El problema que tengo, es que necesito que el JobDone se ejecute primero , sino la aplicación empieza a recorrer los datos de la base interna antes de borrarla, lo que no hace que no se muestren los datos actualizados.
B4X:
Sub GetData(SQL_Cadena As String, sJob As String)
Dim GetSQL As HttpJob
GetSQL.Initialize(sJob, Me)
GetSQL.download2("http://web.com/conexion.php", Array As String ("SQL", SQL_Cadena))
End Sub
Sub actualizarRubros
GetData("SELECT * FROM rubros" ,"GetRubros")
End Sub
Sub JobDone(Job As HttpJob)
If Job.Success Then
Dim res As String
res = Job.GetString
If res.StartsWith("{") Or res.StartsWith("[") Then
Log("Back from Job:" & Job.JobName )
Log("Job Text: " & res)
Dim parser As JSONParser
parser.Initialize(res)
Select Job.JobName
Case "GetRubros"
Dim ListaDatos As List
ListaDatos = parser.NextArray 'returns a list with maps
If ListaDatos.Size == 0 Then
'Algun mensaje.
Else
s.BeginTransaction
s.ExecNonQuery("DELETE FROM rubros")
For i = 0 To ListaDatos.Size - 1
Dim Datos As Map
Datos = ListaDatos.Get(i)
s.ExecNonQuery2("INSERT INTO rubros VALUES(?,?,?,?)", Array As String(Datos.Get("id_rubro"), Datos.Get("rubro"), Datos.Get("imagen"), Datos.Get("orden_de_listado")))
Next
ToastMessageShow("Datos actualizados", False)
s.TransactionSuccessful
s.EndTransaction
End If
End Select
Else
'alguna condicion
End If
Else
ToastMessageShow("Datos no actualizados - Sin conexión", False)
End If
Job.Release
End Sub
¿Alguien sabe como hacerlo? Desde ya muchas gracias por su tiempo