Amelioration de l'application
authorDa Risk <darisk972@gmail.com>
Tue, 31 Mar 2009 22:21:42 +0200
changeset 46 d5a36d820645
parent 45 ae035477b6aa
child 47 743ccc7961dc
Amelioration de l'application
src/com/beem/project/beem/BeemApplication.java
--- a/src/com/beem/project/beem/BeemApplication.java	Tue Mar 31 21:29:48 2009 +0200
+++ b/src/com/beem/project/beem/BeemApplication.java	Tue Mar 31 22:21:42 2009 +0200
@@ -3,7 +3,8 @@
  */
 package com.beem.project.beem;
 
-import com.beem.project.beem.service.aidl.IXMPPFacade;
+import java.util.LinkedList;
+import java.util.List;
 
 import android.app.Activity;
 import android.app.Application;
@@ -13,7 +14,11 @@
 import android.content.ServiceConnection;
 import android.content.res.Configuration;
 import android.content.res.Resources;
+import android.os.Handler;
 import android.os.IBinder;
+import android.os.Message;
+
+import com.beem.project.beem.service.aidl.IXMPPFacade;
 
 /**
  * @author darisk
@@ -25,6 +30,7 @@
     private Context mApplicationContext;
     private Resources mPrivateResources;
     private static BeemApplication mBeemApp;
+    private List<Message> mQueue = new LinkedList<Message>();
     
     public static BeemApplication getApplication(Activity activity) {
 	if (mBeemApp == null) {
@@ -81,7 +87,14 @@
 
 	@Override
 	public void onServiceConnected(ComponentName name, IBinder service) {
+	    // TODO Auto-generated method stub
 	    mFacade = IXMPPFacade.Stub.asInterface(service);
+	    synchronized (mQueue) {
+		for (Message msg : mQueue) {
+		    msg.sendToTarget();
+		}
+		mQueue.clear();
+	    }
 	}
     };
 
@@ -94,5 +107,16 @@
     public IXMPPFacade getXmppFacade() {
 	return mFacade;
     }
-
+    
+    public void callWhenServiceConnected(Handler target, Runnable callback) {
+	Message msg = Message.obtain(target, callback);
+	if (mFacade != null) {
+	    msg.sendToTarget();
+	} else {
+	    startBeemService();
+	    synchronized (mQueue) {
+		mQueue.add(msg);
+	    }
+	}
+    }
 }