我正在开发使用AES加密对媒体(图片,视频等)进行加密的Android应用程序,当我读取大文件(例如超过90 MB)时,我有java.lang.OutOfMemoryError
:< / p>
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(fileToEncrypt));
ByteBuffer bb = ByteBuffer.allocate((int) fileToEncrypt.length());
bis.read(bb.array());
bis.close();
根据this或this主题或其他人,我在AndroidManifest.xml中使用android:largeHeap="true"
选项,但我不确定是最佳方案。是吗 ?如果没有,操作大文件最好的是什么?
答案 0 :(得分:1)
android:largeHeap旗帜有潜在危险,我不会向任何人推荐它。当你想尝试一些东西时它很好,但你不能依赖更大的堆作为最终解决方案。启用大堆可能会因物理内存不足而导致意外崩溃,而不仅仅是针对此特定应用程序的低dalvik内存。
对我来说有两种解决方案: