在 android 的单声道中,我有一个应用程序可以将图像保存到本地存储以进行缓存。当应用程序启动时,它会先尝试从缓存中加载图像,然后再尝试从 Web 加载它们。
我目前很难找到一种从本地存储读取和加载它们的好方法。
我目前正在使用与此等效的东西:
List<byte> byteList = new List<byte>();
using (System.IO.BinaryReader binaryReader = new System.IO.BinaryReader(context.OpenFileInput("filename.jpg")))
{
while (binaryReader.BaseStream.IsDataAvailable())
{
byteList.Add(binaryReader.ReadByte());
}
}
return byteList.toArray();
OpenFileInput() 返回一个不给我长度的流,所以我必须一次读取一个字节。它也无法寻找。这似乎导致图像的加载速度比它们加载的速度慢得多。相比之下,从 Resrouce.Drawable 加载图像几乎是瞬间完成的,但在我的方法中,加载 8kb 文件时会有一个非常明显的暂停,可能是 300 毫秒。这似乎是一项非常明显的任务,但我尝试了许多解决方案并搜索了很多建议但无济于事。
我还注意到,当不在 UI 线程上运行时,这段代码似乎会因 EndOfStream 异常而崩溃。
任何帮助将不胜感激