这个是我在项目中的写的一个传递数据的工具类。在接受数据的Activity或者fragment中,添加监听事件addIMessageListener, 在发送的Activity或者Fragment里面直接发送IMessageCenter.Send(...)即可。
import android.os.Handler;
import android.os.Message;
import android.util.SparseArray;
public class IMessageCenter implements Handler.Callback
{
public static final int IMESSAGE_UPDATE_LIST = 1001;
public static final int IMESSAGE_UPDATE_GRID = 1002;
private static IMessageCenter instance;
private Handler mHandler;
private SparseArray<IMessageListener> mMessageQueue = new SparseArray<IMessageListener>( );
public IMessageCenter( )
{
this.mHandler = new Handler( this );
}
public static IMessageCenter getInstance( )
{
if ( instance == null )
{
instance = new IMessageCenter( );
}
return instance;
}
public void addIMessageListener( int what, IMessageListener listener )
{
if ( mMessageQueue == null )
{
return;
}
mMessageQueue.put( what, listener );
}
public void removeIMessageListener( int what )
{
if ( mMessageQueue == null )
{
return;
}
mMessageQueue.delete( what );
}
public void clearIMessageListener( )
{
if ( mMessageQueue == null )
{
return;
}
mMessageQueue.clear( );
}
public void send( int what, Object obj )
{
Message msg = new Message( );
msg.what = what;
msg.obj = obj;
mHandler.sendMessage( msg );
}
@Override
public boolean handleMessage( Message msg )
{
if ( mMessageQueue != null )
if ( mMessageQueue.indexOfKey( msg.what ) >= 0 )
{
IMessageListener listener = mMessageQueue.get( msg.what );
listener.iMessageReceived( msg );
return true;
}
return false;
}
/**
* Interface for IMessage listeners
*/
public interface IMessageListener
{
/**
* Handles received IMessage.
*
* @param Message the received Message
*/
void iMessageReceived( Message msg );
}
}