1

ユーザーが描画できるように(html5)要素を作成しましたcanvas。描画後、保存(ボタン)できcanvas.toDataURL("image/png");ます。実行され、エンコードされたbase64 dataURL文字列がファイルに保存されます。ただし、ユーザーに自分の絵を表示させる必要があります。


質問は次のとおりです。ユーザーが多くのストーリー文字列をテキスト ファイルに保存しfilesystem、それを読み取ると、メモリ リークが発生します。
PhoneGap は次のように訴えています:java.lang.OutOfMemoryErrorユーザーが保存した dataURL 文字列が多すぎるためです。それらすべてをアレイに再ロードする必要があるため、エラーが発生します。

ユーザーの描画imageを base64 の dataURL ではなく形式 (.jpg) で保存すると、うまくいくと思いますか?

  1. メモリリークの問題は解決しますか?
  2. 次のようなパスに保存されている画像を取得するにはどうすればよいsdcard/story/pics/ですか?
    記録されたファイルにアクセスしたいだけの場合は、次のように記述できます。

    var record= new Media(src,onSuccess, onError); where the src could just be: story/rec/something.mp3 しかし、この方法では画像にアクセスできません。

  3. アプリを iPad にデプロイする必要があるため、このソリューションは iOS でも動作するはずです。
    Develop Environment:
    PhoneGap 1.8.0
    Android 4.0.3
4

1 に答える 1

0

私はバイナリ ファイルで同様の問題に遭遇しました。悪いニュースは、バイナリ データをブリッジを介してネイティブ コードに転送できないため、バイナリ データをファイル システムに書き込めないことです。

バイナリ操作を行うためのプラグインを作成することになりました (または、iOS 用、Android 用、BlackBerry 用の 3 つのプラグイン)。

メモリリークの原因はわかりませんが、画像間のコピーと貼り付けを許可しない限り、一度に 1 つの図面のみをメモリに保持することをお勧めします。 .

リークが何であれ、最近のほとんどの Android デバイスにはかなりの量のメモリが搭載されているため、利用可能なすべてのメモリを使い果たすのは深刻な問題です。

于 2013-03-21T17:10:29.813 に答える