diff --git a/src/com/savoirfairelinux/sflphone/client/SFLPhoneHome.java b/src/com/savoirfairelinux/sflphone/client/SFLPhoneHome.java
index 8583618..a2c1d51 100644
--- a/src/com/savoirfairelinux/sflphone/client/SFLPhoneHome.java
+++ b/src/com/savoirfairelinux/sflphone/client/SFLPhoneHome.java
@@ -164,9 +164,10 @@
         // Reverse
         animation.setRepeatMode(Animation.REVERSE);
 
-        /* startService() can be called any number of times without harm */
-        Log.i(TAG, "starting SipService");
-        startSipService();
+        if (!serviceIsOn) {
+            Log.i(TAG, "starting SipService");
+            startSipService();
+        }
     }
 
     @Override
@@ -175,7 +176,7 @@
         super.onStart();
         // Bind to LocalService
         if (!mBound) {
-            Log.d(TAG, "Binding service...");
+            Log.i(TAG, "onStart: Binding service...");
             Intent intent = new Intent(this, SipService.class);
             bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
         }
@@ -206,7 +207,7 @@
         super.onStop();
         /* stop the service, if no other bound user, no need to check if it is running */
         if (mBound) {
-            Log.d(TAG, "Unbinding service...");
+            Log.i(TAG, "onStop: Unbinding service...");
             unbindService(mConnection);
             mBound = false;
         }
@@ -215,6 +216,8 @@
     /* activity finishes itself or is being killed by the system */
     @Override
     protected void onDestroy() {
+        Log.i(TAG, "onDestroy: stopping SipService...");
+        stopService(new Intent(this, SipService.class));
         serviceIsOn = false;
         super.onDestroy();
     }
@@ -243,6 +246,7 @@
                 Intent sipServiceIntent = new Intent(SFLPhoneHome.this, SipService.class);
                 //sipServiceIntent.putExtra(ServiceConstants.EXTRA_OUTGOING_ACTIVITY, new ComponentName(SFLPhoneHome.this, SFLPhoneHome.class));
                 startService(sipServiceIntent);
+                serviceIsOn = true;
             };
         };
         try {
