altosdroid: do service start/bind/unbind in start/stop, not create/destroy.
[fw/altos] / altosdroid / src / org / altusmetrum / AltosDroid / AltosDroid.java
index df2263ce93f79d0b5e72afae84d72a9acacc4272..437369e22e2a26343058bbb22bb029289265266c 100644 (file)
@@ -55,10 +55,7 @@ public class AltosDroid extends Activity {
 
        // Message types received by our Handler
        public static final int MSG_STATE_CHANGE    = 1;
-       public static final int MSG_DEVNAME         = 2;
-       public static final int MSG_TOAST           = 3;
-       public static final int MSG_DEVCONFIG       = 4;
-       public static final int MSG_TELEMETRY       = 5;
+       public static final int MSG_TELEMETRY       = 2;
 
        // Intent request codes
        private static final int REQUEST_CONNECT_DEVICE = 1;
@@ -112,26 +109,12 @@ public class AltosDroid extends Activity {
                                        break;
                                }
                                break;
-                       case MSG_DEVCONFIG:
                        case MSG_TELEMETRY:
                                //byte[] buf = (byte[]) msg.obj;
                                // construct a string from the buffer
                                //String telem = new String(buf);
                                //ad.mSerialView.append(telem);
                                break;
-                       case MSG_DEVNAME:
-                               // save the connected device's name
-                               ad.mConnectedDeviceName = (String) msg.obj;
-                               if (ad.mConnectedDeviceName != null)
-                                       Toast.makeText(ad.getApplicationContext(), "Connected to "
-                                                       + ad.mConnectedDeviceName, Toast.LENGTH_SHORT).show();
-                               break;
-                       case MSG_TOAST:
-                               Toast.makeText(
-                                               ad.getApplicationContext(),
-                                               (String) msg.obj,
-                                               Toast.LENGTH_SHORT).show();
-                               break;
                        }
                }
        };
@@ -156,6 +139,30 @@ public class AltosDroid extends Activity {
        };
 
 
+       void doBindService() {
+               bindService(new Intent(this, TelemetryService.class), mConnection, Context.BIND_AUTO_CREATE);
+               mIsBound = true;
+       }
+
+       void doUnbindService() {
+               if (mIsBound) {
+                       // If we have received the service, and hence registered with it, then now is the time to unregister.
+                       if (mService != null) {
+                               try {
+                                       Message msg = Message.obtain(null, TelemetryService.MSG_UNREGISTER_CLIENT);
+                                       msg.replyTo = mMessenger;
+                                       mService.send(msg);
+                               } catch (RemoteException e) {
+                                       // There is nothing special we need to do if the service has crashed.
+                               }
+                       }
+                       // Detach our existing connection.
+                       unbindService(mConnection);
+                       mIsBound = false;
+               }
+       }
+
+
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
@@ -195,10 +202,6 @@ public class AltosDroid extends Activity {
                        }
                });
 
-               // Start Telemetry Service
-               startService(new Intent(AltosDroid.this, TelemetryService.class));
-
-               doBindService();
        }
 
        @Override
@@ -210,13 +213,17 @@ public class AltosDroid extends Activity {
                        Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
                        startActivityForResult(enableIntent, REQUEST_ENABLE_BT);
                }
+
+               // Start Telemetry Service
+               startService(new Intent(AltosDroid.this, TelemetryService.class));
+
+               doBindService();
        }
 
        @Override
        public synchronized void onResume() {
                super.onResume();
                if(D) Log.e(TAG, "+ ON RESUME +");
-
        }
 
        @Override
@@ -229,17 +236,16 @@ public class AltosDroid extends Activity {
        public void onStop() {
                super.onStop();
                if(D) Log.e(TAG, "-- ON STOP --");
+
+               doUnbindService();
        }
 
        @Override
        public void onDestroy() {
                super.onDestroy();
-
-               doUnbindService();
+               if(D) Log.e(TAG, "--- ON DESTROY ---");
 
                if (tts != null) tts.shutdown();
-
-               if(D) Log.e(TAG, "--- ON DESTROY ---");
        }
 
 
@@ -303,28 +309,4 @@ public class AltosDroid extends Activity {
                return false;
        }
 
-
-       void doBindService() {
-               bindService(new Intent(this, TelemetryService.class), mConnection, Context.BIND_AUTO_CREATE);
-               mIsBound = true;
-       }
-
-       void doUnbindService() {
-               if (mIsBound) {
-                       // If we have received the service, and hence registered with it, then now is the time to unregister.
-                       if (mService != null) {
-                               try {
-                                       Message msg = Message.obtain(null, TelemetryService.MSG_UNREGISTER_CLIENT);
-                                       msg.replyTo = mMessenger;
-                                       mService.send(msg);
-                               } catch (RemoteException e) {
-                                       // There is nothing special we need to do if the service has crashed.
-                               }
-                       }
-                       // Detach our existing connection.
-                       unbindService(mConnection);
-                       mIsBound = false;
-               }
-       }
-
 }