Message msg = Message.obtain();
msg.obj = "first string value";
msg.setTarget(mClientMessenger);
msg.sendToTarget();
I would like msg.obj to hold two key/value pairs if possible.
Ex:
key1, "first string value"
key2, "second string value"
Then I would like to know how to receive them if possible.
Edit:
I tried..
public class KeyValues {
key1;
key2;
KeyValues(String value1, String value2){
this.key1 = value1;
this.key2 = value2;
}
}
Message msg = Message.obtain();
msg.obj = new KeyValues("first string", "second string");
msg.setTarget(mClientMessenger);
msg.sendToTarget();
In the client's message handler I tried..
MyService.KeyValues keyValues = (MyService.KeyValues) msg.obj
but it threw an exception for improper casting of "Message" object.
To pass multiple key-value pairs in a Message object in Android, you can use a Bundle. A Bundle is a collection of key-value pairs and can be easily put into a Message object
You can send message like below
private void sendMessage() {
// Create a new Bundle
Bundle bundle = new Bundle();
bundle.putString("key1", "first string value");
bundle.putString("key2", "second string value");
// Obtain a new Message object
Message msg = Message.obtain();
msg.setData(bundle); // Set the Bundle as the data of the Message
msg.setTarget(mHandler);
msg.sendToTarget();
}
Receiving the messages
public void handleMessage(Message msg) {
super.handleMessage(msg);
// Retrieve the Bundle from the Message
Bundle bundle = msg.getData();
// Extract the values from the Bundle
String value1 = bundle.getString("key1");
String value2 = bundle.getString("key2");
// Use the values as needed
Log.d("Handler", "Value1: " + value1 + ", Value2: " + value2);
}