Please see the original post:
About sticky service - long running background tasks:
https://www.b4x.com/android/forum/t...-long-running-background-tasks.27065/#content
About Starter service module:
https://www.b4x.com/android/forum/threads/starter-service-consistent-single-entry-point.57599/
-------------------------------------
In this code we can find:
- Start At Boot
- Start Foreground
- Stop Foreground
- StartActivity
- Call sub: CallSubDelayed
- Transport data: CallSubDelayed2 and CallSubDelayed3
Starter (Service Module):
(added sub KillService)
Service2 (Service Module):
StartAtBoot (Service Module):
Main (Activity Module):
About sticky service - long running background tasks:
https://www.b4x.com/android/forum/t...-long-running-background-tasks.27065/#content
About Starter service module:
https://www.b4x.com/android/forum/threads/starter-service-consistent-single-entry-point.57599/
-------------------------------------
In this code we can find:
- Start At Boot
- Start Foreground
- Stop Foreground
- StartActivity
- Call sub: CallSubDelayed
- Transport data: CallSubDelayed2 and CallSubDelayed3
Starter (Service Module):
(added sub KillService)
B4X:
#Region Service Attributes
#StartAtBoot: False
#ExcludeFromLibrary: True
#End Region
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
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)
End Sub
Sub Service_TaskRemoved
'This event will be raised when the user removes the app from the recent apps list.
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
Return True
End Sub
Sub Service_Destroy
End Sub
Sub KillService
StopService(Me)
End Sub
Service2 (Service Module):
B4X:
#Region Service Attributes
#StartAtBoot: False
#StartCommandReturnValue: android.app.Service.START_STICKY
#End Region
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
Dim test As Notification
Dim IDservice As Int = 1
Dim timer1Service As Timer
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.
test.Initialize
test.Icon = "image1name" ' \Objects\res\drawable\image1name.png [read only to stay]
test.SetInfo("title","body",Main)
'Service.StartForeground(IDservice,test)
timer1Service.Initialize("timer1Service", 10000)
End Sub
Sub Service_Start (StartingIntent As Intent)
timer1Service.Enabled = True
End Sub
Sub Service_TaskRemoved
'This event will be raised when the user removes the app from the recent apps list.
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
Return True
End Sub
Sub Service_Destroy
End Sub
Sub timer1Service_tick
ToastMessageShow("Hello word!", True)
End Sub
Sub CreateService
Service.StartForeground(IDservice,test)
' send "Started" to sub "ShowMxgbox" of Main (Activity Module)
CallSubDelayed2(Main, "ShowMxgbox", "Started")
End Sub
Sub KillService
timer1Service.Enabled = False
Service.StopForeground(IDservice)
' send "Stopped" to sub "ShowMxgbox" of Main
CallSubDelayed2(Main, "ShowMxgbox", "Stopped")
StopService(Me)
End Sub
Sub SubOne(value1 As Int)
Dim str1 As String = value1
' send "value1" to sub "ShowMxgbox" of Main
CallSubDelayed2(Main, "ShowMxgbox", str1)
End Sub
Sub SubTwo(value1 As Int, value2 As String)
' send "value1 and value2" to sub "ShowMxgbox" of Main
CallSubDelayed3(Main, "ShowMxgboxValue2", value1, value2)
End Sub
StartAtBoot (Service Module):
B4X:
#Region Service Attributes
#StartAtBoot: True
#End Region
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
End Sub
Sub Service_Create
End Sub
Sub Service_Start (StartingIntent As Intent)
StartActivity(Main)
End Sub
Sub Service_Destroy
End Sub
Main (Activity Module):
B4X:
#Region Project Attributes
#ApplicationLabel: Service Example
#VersionCode: 1
#VersionName:
'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: unspecified
#CanInstallToExternalStorage: False
#End Region
#Region Activity Attributes
#FullScreen: False
#IncludeTitle: True
#End Region
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
End Sub
Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.
Private Button0 As Button
Private Button1 As Button
Private Button2 As Button
Private Button3 As Button
Private Button4 As Button
End Sub
Sub Activity_Create(FirstTime As Boolean)
'Do not forget to load the layout file created with the visual designer. For example:
Activity.LoadLayout("Layout1")
StartService(Service2)
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub Button0_Click
CallSubDelayed(Service2, "CreateService")
End Sub
Sub Button1_Click
'call sub KillService of Service2 (Service Module)
CallSubDelayed(Service2, "KillService")
'call sub KillService of Starter (Service Module)
CallSubDelayed(Starter, "KillService")
End Sub
Sub Button2_Click
ExitApplication
End Sub
Sub ShowMxgbox(text1 As String)
Msgbox(text1, "Service")
End Sub
Sub ShowMxgboxValue2(num1 As Int, text1 As String)
Msgbox(num1, text1)
End Sub
Sub Button3_Click
' send "2016" to sub "SubOne" of Service2
CallSubDelayed2(Service2, "SubOne", 2016)
End Sub
Sub Button4_Click
' send "16 and text" to sub "SubTwo" of Service2
CallSubDelayed3(Service2, "SubTwo", 16, "text")
End Sub
Attachments
Last edited: