Android的哈希表序列化 [英] Android Hashtable Serialization
问题描述
我有一个Hashtable序列化一个奇怪的问题。我做了一个服务器,客户端应用程序。其中服务器(PC / MAC)被序列化Hashtable和通过UDP发送到客户端(Android版)。该数据发送/读取正确,但我得到了一堆下方LogCat中这些消息。
I am having a weird issue with serialization of a Hashtable. I have made a Server, Client app. Where server(PC/MAC) is serializing a Hashtable and sending it to Client(Android) through UDP. The data is sent/read correctly but I get a bunch of these messages below on LogCat.
11月4日至12日:19:43.059:DEBUG / dalvikvm(407):GetFieldID:无法找到现场Ljava / UTIL /哈希表; .loadFactor:F
04-12 11:19:43.059: DEBUG/dalvikvm(407): GetFieldID: unable to find field Ljava/util/Hashtable;.loadFactor:F
偶尔,我会看到这些
11月4日至12日:21:19.150:DEBUG / dalvikvm(407):GC释放10814对象/在97ms 447184字节
04-12 11:21:19.150: DEBUG/dalvikvm(407): GC freed 10814 objects / 447184 bytes in 97ms
该应用程序将运行2-3分钟,然后崩溃。有趣的是我没有看到SDK 1.5 Loadfactor错误。但我确实看到GC免费XXXX的对象,往往安静。
The app would run for 2-3 mins and then crash. Interestingly enough I do not see the Loadfactor errors on SDK 1.5. But I do see the GC Free xxxx objects, quiet often.
调试我发现,问题是与反序列化和错误/警告从以下code来了之后
After debugging I have found that the issue is with de-serialization and the error/warning are coming from following code
code:
ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
ObjectInputStream ois = new ObjectInputStream(bis);
object = ois.readObject();
在
code:
at Code:
object = ois.readObject();
在客户端上。我的服务器被序列化code如下。
on the client. My server is serializing code is the following.
code:
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(obj);
任何想法是怎么回事?
Any idea what is going on?
感谢您的帮助!
推荐答案
不要使用架构之间的序列化。有没有保证序列化的Dalvik虚拟机对象树将在格式与一个JavaSE的/ JavaEE的环境相适应。请使用XML,JSON,协议缓冲区,节俭等,为架构之间传输结构化数据。
Do not use serialization between architectures. There is no guarantee that a serialized Dalvik VM object tree will be in a format that is compatible with a JavaSE/JavaEE environment. Please use XML, JSON, Protocol Buffers, Thrift, etc. for transferring structured data between architectures.
这篇关于Android的哈希表序列化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!