# HG changeset patch # User Da Risk # Date 1238530902 -7200 # Node ID d5a36d8206459697126cf545188c5d60b968b40d # Parent ae035477b6aa49baac2947e4f06148a6c273669e Amelioration de l'application diff -r ae035477b6aa -r d5a36d820645 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 mQueue = new LinkedList(); 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); + } + } + } }