Package android.os
Class Messenger
- java.lang.Object
-
- android.os.Messenger
-
- All Implemented Interfaces:
Parcelable
public final class Messenger extends Object implements Parcelable
Reference to a Handler, which others can use to send messages to it. This allows for the implementation of message-based communication across processes, by creating a Messenger pointing to a Handler in one process, and handing that Messenger to another process.Note: the implementation underneath is just a simple wrapper around a
Binderthat is used to perform the communication. This means semantically you should treat it as such: this class does not impact process lifecycle management (you must be using some higher-level component to tell the system that your process needs to continue running), the connection will break if your process goes away for any reason, etc.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface android.os.Parcelable
Parcelable.ClassLoaderCreator<T>, Parcelable.Creator<T>
-
-
Field Summary
Fields Modifier and Type Field Description static Parcelable.Creator<Messenger>CREATOR-
Fields inherited from interface android.os.Parcelable
CONTENTS_FILE_DESCRIPTOR, PARCELABLE_WRITE_RETURN_VALUE
-
-
Constructor Summary
Constructors Constructor Description Messenger(Handler target)Create a new Messenger pointing to the given Handler.Messenger(IBinder target)Create a Messenger from a raw IBinder, which had previously been retrieved withgetBinder().
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description intdescribeContents()Describe the kinds of special objects contained in this Parcelable's marshalled representation.booleanequals(Object otherObj)Comparison operator on two Messenger objects, such that true is returned then they both point to the same Handler.IBindergetBinder()Retrieve the IBinder that this Messenger is using to communicate with its associated Handler.inthashCode()Returns an integer hash code for this object.static MessengerreadMessengerOrNullFromParcel(Parcel in)Convenience function for reading either a Messenger or null pointer from a Parcel.voidsend(Message message)Send a Message to this Messenger's Handler.static voidwriteMessengerOrNullToParcel(Messenger messenger, Parcel out)Convenience function for writing either a Messenger or null pointer to a Parcel.voidwriteToParcel(Parcel out, int flags)Flatten this object in to a Parcel.
-
-
-
Field Detail
-
CREATOR
public static final Parcelable.Creator<Messenger> CREATOR
-
-
Constructor Detail
-
Messenger
public Messenger(Handler target)
Create a new Messenger pointing to the given Handler. Any Message objects sent through this Messenger will appear in the Handler as ifHandler.sendMessage(Message)had been called directly.- Parameters:
target- The Handler that will receive sent messages.
-
Messenger
public Messenger(IBinder target)
Create a Messenger from a raw IBinder, which had previously been retrieved withgetBinder().- Parameters:
target- The IBinder this Messenger should communicate with.
-
-
Method Detail
-
send
public void send(Message message) throws RemoteException
Send a Message to this Messenger's Handler.- Parameters:
message- The Message to send. Usually retrieved throughMessage.obtain().- Throws:
RemoteException- Throws DeadObjectException if the target Handler no longer exists.
-
getBinder
public IBinder getBinder()
Retrieve the IBinder that this Messenger is using to communicate with its associated Handler.- Returns:
- Returns the IBinder backing this Messenger.
-
equals
public boolean equals(Object otherObj)
Comparison operator on two Messenger objects, such that true is returned then they both point to the same Handler.- Overrides:
equalsin classObject- Parameters:
otherObj- the object to compare this instance with.- Returns:
trueif the specified object is equal to thisObject;falseotherwise.- See Also:
Object.hashCode()
-
hashCode
public int hashCode()
Description copied from class:ObjectReturns an integer hash code for this object. By contract, any two objects for whichObject.equals(java.lang.Object)returnstruemust return the same hash code value. This means that subclasses ofObjectusually override both methods or neither method.Note that hash values must not change over time unless information used in equals comparisons also changes.
See Writing a correct
hashCodemethod if you intend implementing your ownhashCodemethod.- Overrides:
hashCodein classObject- Returns:
- this object's hash code.
- See Also:
Object.equals(java.lang.Object)
-
describeContents
public int describeContents()
Description copied from interface:ParcelableDescribe the kinds of special objects contained in this Parcelable's marshalled representation.- Specified by:
describeContentsin interfaceParcelable- Returns:
- a bitmask indicating the set of special object types marshalled by the Parcelable.
-
writeToParcel
public void writeToParcel(Parcel out, int flags)
Description copied from interface:ParcelableFlatten this object in to a Parcel.- Specified by:
writeToParcelin interfaceParcelable- Parameters:
out- The Parcel in which the object should be written.flags- Additional flags about how the object should be written. May be 0 orParcelable.PARCELABLE_WRITE_RETURN_VALUE.
-
writeMessengerOrNullToParcel
public static void writeMessengerOrNullToParcel(Messenger messenger, Parcel out)
Convenience function for writing either a Messenger or null pointer to a Parcel. You must use this withreadMessengerOrNullFromParcel(android.os.Parcel)for later reading it.- Parameters:
messenger- The Messenger to write, or null.out- Where to write the Messenger.
-
readMessengerOrNullFromParcel
public static Messenger readMessengerOrNullFromParcel(Parcel in)
Convenience function for reading either a Messenger or null pointer from a Parcel. You must have previously written the Messenger withwriteMessengerOrNullToParcel(android.os.Messenger, android.os.Parcel).- Parameters:
in- The Parcel containing the written Messenger.- Returns:
- Returns the Messenger read from the Parcel, or null if null had been written.
-
-