Android 消息发送对象,但使对象属性为空
我有多线程应用程序在线程之间发送消息。我用这种方法发送消息Android 消息发送对象,但使对象属性为空,android,multithreading,messaging,Android,Multithreading,Messaging,我有多线程应用程序在线程之间发送消息。我用这种方法发送消息 public static void sendToListener(SomeObject someobject, Object obj) { Message msg = new Message(); msg.setTarget(ResponseClass.responseMessageHandler); Vector<Object> v = new Vector<Object>();
public static void sendToListener(SomeObject someobject, Object obj) {
Message msg = new Message();
msg.setTarget(ResponseClass.responseMessageHandler);
Vector<Object> v = new Vector<Object>();
v.add(someobject);
v.add(obj);
msg.obj = v;
msg.arg1 = someobject.id;
Log.d(TAG,someobject.str); // property named str is not null
msg.sendToTarget();
}
publicstaticvoid发送列表(someobjectsomeobject,objectobj){
Message msg=新消息();
msg.setTarget(ResponseClass.responseMessageHandler);
向量v=新向量();
v、 添加(someobject);
v、 添加(obj);
msg.obj=v;
msg.arg1=someobject.id;
Log.d(TAG,someobject.str);//名为str的属性不为null
msg.sendToTarget();
}
我与你一起接受
public static Handler responseMessageHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
Vector<Object> v = (Vector<Object>) msg.obj;
SomeObject so = (SomeObject) v.elementAt(0);
Object o = v.elementAt(1);
Log.d(TAG,so.str); // property named str is null
}
};
公共静态处理程序responseMessageHandler=新处理程序(){
@凌驾
公共无效handleMessage(消息消息消息){
向量v=(向量)msg.obj;
SomeObject so=(SomeObject)v.elementAt(0);
对象o=v.elementAt(1);
Log.d(TAG,so.str);//名为str的属性为null
}
};
若我用一个对象发送消息,那个么对象发送时并没有问题,但对象的字符串属性发送为null。所有基元类型的属性都是正确的,例如布尔值和整数。您使用的是什么版本。从te文档-我使用的是sdk版本4(android1.6),为什么不通过捆绑使用标准方式呢。Bundle data=新Bundle();数据可串行化(v);msg.setData(数据)@莫乔·瑞辛,谢谢。我明白问题所在。但我不想使用
setData(Bundle)
方法。发送可序列化对象时速度很慢。所有这些线程都在同一进程中运行吗?如果在清单中声明它们在不同的进程中运行,那么复杂类型将无法在进程边界遍历中生存。另外,您永远不应该调用新消息()
,始终使用Message.get()或Handler.obtainMessage()。