其中一种方法是为每个不想要在活动之间传递的不是Serializable类型实现Serializer类。下面是一个简单的串行接口:
public interface Serializer {
void serialize(Object object, DataOutputStream out);
Object deserialize(DataInputStream in);
}
后,您可以使用this或任何其他的Base64编码器/解码器DataOutputStream
转换为String
或其他序列化类型。使用此目的的方法,如:
private String serializeToString(Object object, Serializer serializer) {
ByteArrayOutputStream bStream = new ByteArrayOutputStream();
DataOutputStream dStream = new DataOutputStream(bStream);
try {
serializer.serialize(object, dStream);
} catch (IOException e) {
logger.error(e, "Couldn't serialize " + object);
return null;
}
return Base64.encodeToString(bStream.toByteArray(), false);
}
private Object deserializeFromString(String string, Serializer serializer) {
try {
return serializer.deserialize(
new DataInputStream(
new ByteArrayInputStream(
Base64.decode(string))));
} catch (IOException e) {
logger.error(e, "Couldn't deserialize [" + string + "]");
return null;
}
}
之后,你可以简单地通过序列化为String
活动通过你的对象,只是反序列化回你的对象,当你需要。