Jas*_*son 2 android out-of-memory
我正在 Android 设备的 SD 卡上下载一个相当大的文件(~60MB)。下载进行得很好,但我需要将这个文件完整地提取到内存中。我知道这对于智能手机来说是一大堆内存,但我知道我的设备有两倍多的内存。无论如何,我的实际问题是OutOfMemoryError在将文件读入字节数组时得到一个。有什么方法可以增加为我的应用程序分配的内存,或者某种方法来“伪造”引用文件但将文件保存在外部存储中而不将其加载到内部存储器中?
Android 中的每个虚拟机实例都有他们所谓的 VM 预算。这基本上是整个应用程序可以占用的最大内存量,仅此而已。getRuntime().maxMemory() 将为您提供当前实例的虚拟机预算大小。
我认为预算可以从 16MB (G1) 到 48MB (Moto Xoom)。这些数字可能会有所不同,因为我正在努力记住。
通常对于这样的事情,您将数据作为 InputStream 读取并在读取数据时处理数据,但不保留数据本身。
如果这是位图。您可以使用...
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 4; // Divides the width and height each by 4 when reading the data in.
Bitmap bitmap = BitmapFactory.decodeFile(String "filePath", options);
Bitmap bitmap = BitmapFactory.decodeStream(InputStream "fileStream", options);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1061 次 |
| 最近记录: |