#Region Service Attributes
#StartAtBoot: False
#End Region
Sub Process_Globals
Private ongoingTasks As Map
End Sub
Sub Service_Create
ongoingTasks.Initialize
End Sub
Sub Service_Start (StartingIntent As Intent)
Service.StopAutomaticForeground 'Call this when the background task completes (if there is one)
End Sub
Sub Service_Destroy
End Sub
Sub Download (ImageSource As List) As ResumableSub
For i = 0 To ImageSource.Size - 1
Dim link As String = ImageSource.get(i)
If ongoingTasks.ContainsKey(link) = False Then
ongoingTasks.Put(link, "")
Dim imgName As String = Regex.Split("/",link)(Regex.Split("/",link).Length-1)
If File.Exists(File.DirDefaultExternal & "/cache",imgName) And File.Size(File.DirDefaultExternal & "/cache",imgName)>0 Then
Try
' check if image file is corrupted or not
Dim x As Bitmap 'ignore
x = LoadBitmapResize(File.DirDefaultExternal& "/cache",imgName,50dip,50dip,True)
ongoingTasks.Remove(link)
Catch
Dim j As HttpJob
j.Initialize(link, Me)
j.Download(link)
wait For (j) JobDone(j As HttpJob)
If j.Success Then
Dim bmp As B4XBitmap = j.GetBitmap
Dim os As OutputStream
os = File.OpenOutput(File.DirDefaultExternal & "/cache",imgName,False)
If imgName.ToLowerCase.EndsWith(".png") Then
bmp.WriteToStream(os,100,"PNG")
Else
bmp.WriteToStream(os,100,"JPEG")
End If
os.Close
ongoingTasks.Remove(j.JobName)
End If
j.Release
End Try
Else
Dim j As HttpJob
j.Initialize(link, Me)
j.Download(link)
wait For (j) JobDone(j As HttpJob)
If j.Success Then
Dim bmp As B4XBitmap = j.GetBitmap
Dim os As OutputStream
os = File.OpenOutput(File.DirDefaultExternal & "/cache",imgName,False)
If imgName.ToLowerCase.EndsWith(".png") Then
bmp.WriteToStream(os,100,"PNG")
Else
bmp.WriteToStream(os,100,"JPEG")
End If
os.Close
ongoingTasks.Remove(j.JobName)
End If
j.Release
End If
End If
Next
Return True
End Sub
Sub ActivityIsPaused
ongoingTasks.Clear
End Sub