其中一種方法是爲每個不想要在活動之間傳遞的不是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
活動通過你的對象,只是反序列化回你的對象,當你需要。