I’m writing a Bluetooth remote control application to control my Bluetooth enabled robot, but I have a hard time understanding the workflow of an Android application. I know what I want, but it’s not very easy to do. Other responses haven’t been satisfactory.
Here’s a rough application layout I want:

If you have a better idea of how to do this thing I’d be happy to consider.
Mainly my problem is accessing the connection thread/service (whatever the name is) from the connect method of the main activity and from the control activity, how do I pass the reference? I know that the main activity can disappear when in a sub-activity of the application, so I’d have to pass the reference by getExtra() probably, but it only takes a String variable…
One method you might like to consider is using a Bound Service. This can be made to return an IBinder interface, allowing access to the service’s public methods. You can make any of your activities bind to the service and thus pass/retrieve data to/from the service.
If you need the service to communicate with the activities immediately (e.g for lost connection), then the service could use sendBroadcast to inform activities which had registered a BroadcastReceiver to listen for the intent sent in the broadcast.