2

カメラから写真を撮り、ByteArrayに圧縮してデータベースに保存するアプリケーションを作成していますが、データベースから画像を読み取ることによってアプリケーションの処理が遅くなる可能性があるよりも、さまざまな多数の画像がある場合にそれを読みました。画像を (内部メモリまたは SD カードに) 保存し、ListView で表示するのが最適ですか?

ありがとう

4

4 に答える 4

1

画像をSDカードに保存します。最善の方法は、ImageCache を使用することです。

キャッシュイメージ。

于 2012-05-03T03:53:05.530 に答える
1

データベースに画像を保存すると、クエリの速度が低下するため、一般的には全体的に悪い考えです。

このSOの質問も参照してください。

于 2012-05-03T03:53:58.077 に答える
1

最良の方法は、別のフォルダーを使用して SD カードに画像を保存することです。(内部メモリを使用すると、他のアプリケーションのインストールに必要なスペースが使用されるため、役に立ちません。)

アプリケーションをロードするたびに、フォルダーの内容を読み取り、リストに入力します。そのために別のデータベースを維持する必要はありません。コードのパフォーマンスを向上させるには、キャッシュ ビットマップを使用します。

ベストプラクティスは私の意見によるものです

  1. キャッシュがSoftReferencesを使用していることを確認してください。これにより、メモリ不足にならず、古いビットマップを失う「費用」で常に新しいビットマップをロードできます。
  2. Canvas の drawBitmap メソッドを使用して、大規模なビットマップを小さく描画します。
  3. OutOfMemoryErrorを防ぐようにしてください。これは Exception のサブクラスではなく、Throwable のサブクラスであるため、catch(Exception e)句でキャッチされないことに注意してください。
于 2012-05-03T04:01:55.637 に答える
0

データベースに画像を保存するのは悪い考えです。遅いとスペースがかかります。私が知っている最良のオプションは、それらの画像へのパスまたはリンクをデータベースに保存し、実際のファイルをSDカードや内部ストレージなどのストレージに保存することです。または、sdcardに配置するかなりの量のスペースが必要になります。

于 2012-05-03T03:50:33.097 に答える