我有一个大的int数组,其中包含格式为ARGB(alpha,R,G和B通道,每个1个字节)的图像数据。我想将它保存到onPause()
中以便能够在应用程序重新启动时重新加载它。你认为最好的方法是做什么?什么是向文件写入int数组(图像数据)的最佳方式
我发现了以下方法:
手动int数组转换为字节阵列(见here),然后使用一个
FileOutputStream
到输出字节数组。将数组换成
java.nio.IntBuffer
,然后使用java.io.ObjectOutputStream.writeObject()
将对象写入文件。使用
java.io.ObjectOutputStream.writeInt()
一次写入每个元素一个。
所有这些方法看起来相当浪费,所以有可能是另一种更好的方法。可能甚至是使用图像压缩来减小文件大小的方法?
I alr eady尝试了onSaveInstance,但遇到了一个奇怪的问题。使用序列主页按钮 - >重新启动应用程序 - >关闭屏幕(按下电源按钮) - >恢复(再次按下电源按钮),onCreate()被调用一次空束,onSaveInstance被调用,然后再次调用onCreate 。结果是包中的数据丢失了。这似乎只在onSaveInstance()中的处理很长且应用程序设置为android:screenOrientation =“landscape”时才会出现。 – Pooks