Hello, I am trying to develop an application which will require a service to run in the background. I am relatively new to android programming, and after reading many posts, blogs, how-to's and books on creating and managing services, I am still pretty confused about which model I should try to use.
First, let me present (in general) the application requirements: I need an application which will spawn a background process (service?) which will connect to a bluetooth device. The bluetooth device is designed to deliver data to the android device. The issue is that the data could come in at any moment, so the bluetooth connection has to stay active. Note that the application is a VERY SPECIFIC app and is NOT intended for public use. I do understand the arguments for not having background apps running all the time, but please understand that this is a very specific application for a very specific client. Now, in general, I think the program flow would be to start the application (and launch a UI activity). Then I need to configure and connect to the bluetooth device. At this point, the user should be able to do other things - make phone calls, check their email, etc., while the bluetooth connection is still active and potentially receiving data. If data comes in, a notification is fired, etc. So here are my questions and concerns: 1. If I start an app (which spawns a UI activity and ultimately my bluetooth connection service) but the app is killed, apparently, the service handling the bluetooth connection is killed as well. How can I keep that alive? I read that Service.setForeground() was depricated, but even if I were to set it to the foreground, if the app is killed, the service is killed as well. I need to have it run in the background with as high of a priority as possible (again, I do understand that this is considered "bad form", but this is a specific app and this functionality has been requested by the client). 2. If I started the app (and the service, etc.), but the user, say, answers a phone call, the app is put into the background. However, let's say the user goes back to the home screen and starts a DIFFERENT instance of the app, i.e., he doesn't hold down the home key to select the already running app from the task manager but starts a completely new one. If the service handling the bluetooth connection is still running, how will this new instance behave? i.e., how can I get it to connect to the bluetooth service which is ALREADY running in the FIRST instance of the app instead of this new instance? Do I have to use some form of a Remote service instead of a local service? This is where I'm a little confused by things as it seems remote services and defining an AIDL seems to create a lot of extra overhead, and since I'm already creating a lot of overhead with the service running in the background all the time, I want to keep that as small as possible. How can I insure I am connecting to the same service already running? Thank you for your time and any advice you can give me. Darryl -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en