Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 消息发送对象,但使对象属性为空_Android_Multithreading_Messaging - Fatal编程技术网

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()。