我基本上是在尝试在状态之间保存一组位图。
我 fragment 的 onSaveInstanceState:
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putParcelableArray(SELECTED_IMAGES_ARRAY_BUNDLE, galleryAdapter.getImageBitmaps());
}
在它的 onCreateView 中,我这样检索数组:
savedInstanceState.setClassLoader(Bitmap.class.getClassLoader());
Bitmap[] savedSelectedImages = (Bitmap[]) savedInstanceState.getParcelableArray(SELECTED_IMAGES_ARRAY_BUNDLE);
这会正常工作,除非 Android 操作系统进行一些内存管理,如果它在后台运行则终止我的进程,然后在我返回时尝试恢复它。
这是我得到的错误:
AndroidRuntime(4985): Caused by: java.lang.ClassCastException: android.os.Parcelable[] cannot be cast to android.graphics.Bitmap[]
我认为这与没有正确设置 classLoader 有关,但我尝试了所有方法,但似乎无法让它工作
最佳答案
您好,不建议将位图放入一个会花费额外处理时间的包中。并消耗大量内存。强烈建议传递路径或将图像保存在外部存储中,并将绝对路径 bundle 到图像文件....在 SO Bundle Bitmap 中查看此问题.
关于android - 解码 parcelable 数组时出现 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15015848/