我正在为Android 2.2开发。
默认情况下,放入资源和资产的内容会在APK中压缩,除非它们的扩展名表明它们已经被压缩(mp3,png)。此外,在Android 2.3之前,对于资产,您只能放置大小小于1 MB的未压缩文件。
如果我将1.5MB二进制文件放入res / raw,并且我的程序用它的标准Android ID(R.raw .....)引用它,那么系统会将整个文件拉入存储器?由于1.5MB以压缩方式存储,我认为必须这样做。这是令人不愉快的,因为程序可能只需要从给定的文件偏移量加载1KB的数据。这会对应用程序性能/速度产生严重影响。
我看到两个解决方案:
从大文件中有效读取二进制数据内存的最佳方法是什么?我不想将我的大文件拆分成许多小文件,除非这是唯一的方法。
答案 0 :(得分:1)
我选择#2解决方案然后使用RandomAccessFile
来避免线性访问。
答案 1 :(得分:1)
我也会选择解决方案#2,但我不使用随机访问文件,而是使用java.nio.MappedByteBuffer - 这样你就可以获得带字节缓冲区语义的快速随机访问。