--- 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;
}
}