Android Tutorial Service Modules

entolium

Member
Licensed User
Longtime User
When I press the power button, and the screen turn on, the Notify is running and showing the message "Device connected".
Is possible the problem could be the astreams?
 

entolium

Member
Licensed User
Longtime User
Thank you Erel,

This is the code:

B4X:
Sub AStreams_Error
    astreams.Close
    StartServiceAt("", DateTime.Now + 2 * DateTime.TicksPerSecond, True) 'schedule the next task to run in 2 seconds.
End Sub

Sub Astreams_Terminated
    astreams.Close
    StartServiceAt("", DateTime.Now + 2 * DateTime.TicksPerSecond, True) 'schedule the next task to run in 2 seconds.
End Sub

The objetive is use a tablet like car GPS, with an usb antena. The gps never must fail, and must recover it in any error.
I'm trying to restart the service in all errors and when power on, but nothing works.
 

entolium

Member
Licensed User
Longtime User
Thank you Erel,

I can't debug the app. The usb is used by the gps and througt wifi I have problems and the debugger stops.

When power off, the GPS antenna power off (the led off). I add toast message in all lines, and I think the only one problem is the connection usb breaks (the astream don't fire any error).
With a Timer I could monitor the usb state, but I need the usb connection state property for check, and the library don't have it .
 

entolium

Member
Licensed User
Longtime User
More questions, I'm sorry.

I have one activity and one service.

When execute "StartService(..." (Pressing F8), approximately 12 seconds after (the yellow bar is waiting in the line "Sub Service_Create"), whitout touching anything, the service run the code

What is happening?
 

entolium

Member
Licensed User
Longtime User
Please start a new thread for this. There might be other ways to find that the USB has disconnected.

I'm resolved. I added "Startservice" in Activity_Resume. My app is linked with the usb device, then, when the system return from deep, resume the app and the service start again.
 

MrKim

Well-Known Member
Licensed User
Longtime User
IF I start a service and then open a MsgBox will the service continue to run?
 

incendio

Well-Known Member
Licensed User
Longtime User
I wonder about the use of Service.

Suppose I have a service to download a lot of data from internet at the specific time, since service is run in the same thread with other activities, it will freeze user interaction when service is running, right?
 

LucaMs

Expert
Licensed User
Longtime User
I would say wrong. One of the reasons to using the services is to delegate them long works to execute in background.

As Erel says in the main post:
- Running a long operation. For example downloading a large file from the internet. In this case you can call Service.StartForeground (from the service module). This will move your activity to the foreground state and will make sure that the OS doesn't kill it. Make sure to eventually call Service.StopForeground.

The first example, moreover, does just that.
 

incendio

Well-Known Member
Licensed User
Longtime User
Even running on the same thread, it won't interrupt current process?

Isn't it, when running on the same thread all processes must be carried in order, mean you can't do next process if previous process not finished yet.
 

Erel

B4X founder
Staff member
Licensed User
Longtime User
Suppose I have a service to download a lot of data from internet at the specific time, since service is run in the same thread with other activities, it will freeze user interaction when service is running, right?
No. All the libraries that handle network communication (including HttpUtils2) make sure to use background threads for the communication.
 

incendio

Well-Known Member
Licensed User
Longtime User
OK, but after download finished, service will do something with this data, before presented to users, may be doing some calculations, saving to database, etc.

This process could take times, and before the process finished, won't it delayed other process?
 

incendio

Well-Known Member
Licensed User
Longtime User
It is not about CPU, it's about thread.

Even there are more CPU, if running on the same thread, I think it could delayed other process.

The solution that I can think right now is separate main application with service app, but I don't know if service app able to read or right main app data if this data located on directory internal.
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
You wrote "delayed" not interrupt.

Since I'm starting now to use the service modules, I'm not sure.

The previous Erel's answer suggests that the communication takes place in a different thread, but it is not clear if ONLY for communication.

But there is an optimal solution: try it!

 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…