`ImageView` 繼承 `View`,**未實現 `Serializable`**,且持有 `Context`、`Canvas` 等運行時上下文引用,序列化會拋出 `NotSerializableException` 或反序列化後黑屏 (Native 資源丟失)。
// 數據類
class ImageItem implements Serializable {
String url; // 圖片 URL/路徑
Rect bounds; // 顯示區域
Matrix matrix; // 縮放/平移矩陣 (可序列化為 9 float 陣列)
// getter/setter
}
// 保存
List items = ...;
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file))) {
oos.writeObject(items);
}
// 讀取並重建 View
List loaded = (List) ois.readObject();
for (ImageItem item : loaded) {
ImageView iv = new ImageView(context);
iv.setImageBitmap(loadBitmap(item.url)); // 異步加載
iv.setScaleType(ScaleType.MATRIX);
iv.setImageMatrix(item.matrix);
container.addView(iv, new LayoutParams(item.bounds.width(), item.bounds.height()));
}
更輕量、跨版本穩定、易調試。