我创建了一个 canvas
(html5) 元素来让用户在其上绘图,绘图后,他们可以保存(一个按钮)它: canvas.toDataURL("image/png");
将是
执行后,编码后的 base64 dataURL 字符串将存储到文件中。但我需要让用户查看他的画。
问题是:当用户在文本文件中保存许多故事字符串并且文件系统读取它时,内存将会泄漏。
PhoneGap 提示:java.lang.OutOfMemoryError
,因为用户保存了太多的 dataURL 字符串。由于所有这些都必须重新加载到数组中,因此会发生错误。
我想如果我将用户的绘图保存为 image
格式(.jpg)而不是 base64 dataURL,它会起作用吗?
- 它能解决内存泄漏问题吗?
如何检索存储在以下路径中的图像:
sdcard/story/pics/
?
如果我只想访问录制的文件,我可以这样写:var record= new Media(src,onSuccess, onError); src 可以是:story/rec/something.mp3
但我无法像这样访问图像。- 该解决方案也应该适用于 iOS,因为我必须将该应用部署到 iPad。
开发环境
:
PhoneGap 1.8.0
安卓4.0.3
最佳答案
我在处理二进制文件时遇到了类似的问题,坏消息是您无法将二进制数据写入文件系统,因为二进制数据无法通过桥传输到 native 代码中。
我最终编写了一个插件来进行二进制操作(或者更确切地说是三个插件,一个用于 iOS,另一个用于 Android,第三个用于 BlackBerry)。
我不确定是什么导致了内存泄漏,但我建议一次只在内存中保存一幅图画,除非您允许在图像之间进行复制和粘贴,在这种情况下,我会将应用程序限制为两个图像立即内存。
无论泄漏是什么,都会严重耗尽所有可用内存,因为大多数现代 Android 设备上都有相当多的内存。
关于java - Android系统上如何通过phonegap访问SDCARD中的图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15553233/