1

我创建了一个canvas(html5) 元素让用户在其上绘图,绘图后,他们可以保存(一个按钮)它:canvas.toDataURL("image/png");将执行并将编码的 base64 dataURL 字符串存储到文件中。但我需要让用户查看他的画作。


这是一个问题:当用户将许多故事字符串保存在一个文本文件中并filesystem读取它时,内存会泄漏。
PhoneGap 抱怨:java.lang.OutOfMemoryError,因为用户保存了太多的 dataURL 字符串。由于所有这些都必须重新加载到数组中,因此会发生错误。

我想如果我将用户的绘图保存为image格式(.jpg)而不是 base64 dataURL,它会起作用吗?

  1. 它会解决内存泄漏问题吗?
  2. 如何检索存储在以下路径中的图像:sdcard/story/pics/
    如果我只想访问录制的文件,我可以写:

    var record= new Media(src,onSuccess, onError); where the src could just be: story/rec/something.mp3 但是我无法以这种方式访问​​图像。

  3. 该解决方案也应该适用于 iOS,因为我必须将应用程序部署到 iPad。
    Develop Environment
    PhoneGap 1.8.0
    安卓 4.0.3
4

1 回答 1

0

我在二进制文件中遇到了类似的问题,坏消息是您无法将二进制数据写入文件系统,因为二进制数据无法通过网桥传输到本机代码中。

我最终编写了一个插件来进行二进制操作(或者更确切地说是三个插件,一个用于 iOS,另一个用于 Android,第三个用于黑莓)。

我不确定是什么导致了内存泄漏,但我建议一次只在内存中绘制一张,除非你允许在图像之间复制和粘贴,在这种情况下,我会限制应用程序一次在内存中使用两张图像.

无论泄漏是什么,都必须严重耗尽所有可用内存,因为大多数现代 Android 设备上都有相当多的内存。

于 2013-03-21T17:10:29.813 回答