a debug
authorNikita Kozlov <nikita@beem-project.com>
Fri, 06 Nov 2009 19:28:02 +0100
changeset 495 7ac6af9ceb0d
parent 494 dd9ad5fec728
child 496 3c83d2e2c478
a debug
src/com/beem/project/beem/ui/Login.java
--- a/src/com/beem/project/beem/ui/Login.java	Fri Nov 06 18:00:49 2009 +0100
+++ b/src/com/beem/project/beem/ui/Login.java	Fri Nov 06 19:28:02 2009 +0100
@@ -46,7 +46,7 @@
     private ConnectionRunnable mConnectionRunnable = new ConnectionRunnable();
     private ProgressDialog mProgressDialog;
 
-    private boolean mIsConnected;
+    private boolean mIsConnectedService;
     private final ServiceConnection mServConn = new BeemServiceConnection();
     private IXmppFacade mXmppFacade;
 
@@ -54,7 +54,7 @@
     private boolean mIsConfigured;
     private int mRetry;
     private BeemBroadcastReceiver mReceiver;
-
+    private IXmppConnection mXmppConnection;
 
     /**
      * Constructor.
@@ -97,14 +97,23 @@
     @Override
     protected void onStop() {
 	super.onStop();
-	Log.d(TAG,"onStop");
-	if (mIsConfigured && (mIsConnected || mXmppFacade != null)) {
+	Log.d(TAG,"onStop " + mIsConnectedService);
+	if (mIsConfigured && (mIsConnectedService || mXmppFacade != null)) {
 	    mReceiver.setBinded(false);
+	    boolean isConnected = false;
+	    try {
+		isConnected = mXmppConnection.isAuthentificated();
+	    } catch (RemoteException e) {
+		e.printStackTrace();
+	    }
 	    unbindService(mServConn);
+	    if (isConnected) {
+		stopService(SERVICE_INTENT);
+	    }
 	    mXmppFacade = null;
 	}
     }
-    
+
     /**
      * {@inheritDoc}
      */
@@ -115,12 +124,13 @@
 	mConnectionHandler.removeCallbacks(mConnectionRunnable);
 	mProgressDialog.dismiss();
     }
-    
+
     /**
      * {@inheritDoc}
      */
     protected void onResume() {
 	super.onResume();
+	Log.d(TAG,"onResume");
 	this.registerReceiver(mReceiver, new IntentFilter(BeemBroadcastReceiver.BEEM_CONNECTION_CLOSED));
     }
 
@@ -130,9 +140,9 @@
     @Override
     public void onStart() {
 	super.onStart();
-	Log.d(TAG,"onStart");
+	Log.d(TAG,"onStart " + mIsConnectedService);
 	mIsConfigured = mSettings.getBoolean("PreferenceIsConfigured", false);
-	if (mIsConfigured && !mIsConnected) {
+	if (mIsConfigured && !mIsConnectedService) {
 	    try {
 		Thread.sleep(1000); //HACK: Pour éviter de rebinder un service pas encore arreter.
 	    } catch (InterruptedException e) {
@@ -140,6 +150,7 @@
 	    }
 	    bindService(Login.SERVICE_INTENT, mServConn, BIND_AUTO_CREATE);
 	    mReceiver.setBinded(true);
+	    mIsConnectedService = true;
 	}	    
     }
 
@@ -220,16 +231,16 @@
 	 */
 	@Override
 	public void connectionClosed() throws RemoteException {
-	    mIsConnected = false;
 	    if (mXmppFacade != null) {
+		mConnectionHandler.postAtTime(mConnectionRunnable, Integer.parseInt(mSettings.getString("settings_key_reco_delay", "10")) * 1000 + SystemClock.uptimeMillis());
 		mXmppFacade = null;
 	    }
 	}
 
 	@Override
 	public void connectionClosedOnError() throws RemoteException {
-	    mIsConnected = false;
 	    if (mXmppFacade != null) {
+		mConnectionHandler.postAtTime(mConnectionRunnable, Integer.parseInt(mSettings.getString("settings_key_reco_delay", "10")) * 1000 + SystemClock.uptimeMillis());
 		mXmppFacade = null;
 	    }
 	}
@@ -237,11 +248,11 @@
 	@Override
 	public void connectionFailed(String errorMsg) throws RemoteException {
 	    Log.d(TAG, "CONNECTIONFAILLED");
-	    mIsConnected = false;
 	    if (mXmppFacade != null) {
 		mReceiver.setBinded(false);
 		Login.this.unbindService(mServConn);
 		Login.this.stopService(SERVICE_INTENT);
+		mIsConnectedService = false;
 		mXmppFacade = null;
 	    }
 	    dismissProgressDialog();
@@ -285,7 +296,6 @@
 
 	@Override
 	public void onConnect() throws RemoteException {
-	    mIsConnected = true;
 	    dismissProgressDialog();
 	    Log.i(TAG, "Connected.");
 	    mXmppFacade.changeStatus(Status.CONTACT_STATUS_AVAILABLE, null);
@@ -296,18 +306,14 @@
 
 	@Override
 	public void reconnectingIn(int seconds) throws RemoteException {
-	    mIsConnected = true;
-
 	}
 
 	@Override
 	public void reconnectionFailed() throws RemoteException {
-	    mIsConnected = false;
 	}
 
 	@Override
 	public void reconnectionSuccessful() throws RemoteException {
-	    mIsConnected = true;
 	}
     }
 
@@ -315,8 +321,6 @@
      * ServiceConnection use to connect to the Beem Service.
      */
     private class BeemServiceConnection implements ServiceConnection {
-	private IXmppConnection mXmppConnection;
-
 	/**
 	 * Constructor.
 	 */
@@ -327,19 +331,18 @@
 	public void onServiceConnected(ComponentName name, IBinder service) {
 	    Log.d(TAG, "service connected");
 	    mXmppFacade = IXmppFacade.Stub.asInterface(service);
+	    mIsConnectedService = true;
 	    try {
 		mXmppConnection = mXmppFacade.createConnection();
 		mXmppConnection.addConnectionListener(new BeemConnectionListener());
 		if (!mXmppConnection.isAuthentificated()) {
 		    mConnectionHandler.post(new Runnable() {
-
 			@Override
 			public void run() {
 			    mProgressDialog.setMessage(getString(R.string.login_login_progress));
 			    mProgressDialog.show();
 			}
 		    });
-		    
 		    Login.this.startService(Login.SERVICE_INTENT);
 		} else {
 		    startActivity(new Intent(Login.this, ContactList.class));
@@ -353,7 +356,7 @@
 	@Override
 	public void onServiceDisconnected(ComponentName name) {
 	    Log.d(TAG, "service disconnected");
-	    mIsConnected = false;
+	    mIsConnectedService = false;
 	    mXmppFacade = null;
 	}
     }