Android アプリケーションがサービスに接続して、サーバーからファイルを要求します。要求時に、ファイルの種類は不明ですが、サーバーはファイル拡張子とファイル データのバイト配列を含むハッシュマップを返します。
私のモバイル アプリはこのデータを取得し、それが jpg、png、txt、または html ファイルである場合は、ファイルを画面に表示します。ファイル タイプが異なる場合は、ファイルが作成され、システムは外部アプリケーションでファイルを開くように求められます。
テキスト、html、および外部ファイルはすべて問題なく動作しています。画像は最初にロードした画像では正常に機能していますが、サーバーに 2 回目の呼び出しを行ってリスト内の次の画像をロードすると、次のエラーがよく発生します。
E/AndroidRuntime(390): java.lang.OutOfMemoryError: bitmap size exceeds VM budget
同じサーバー呼び出しを使用して、古い情報の上に新しい情報を保存しています。実際に画像データをロードしている場所のコードは次のとおりです。
imageView.setImageBitmap(BitmapFactory.decodeByteArray(bytes, 0, bytes.length));
アプリケーションがクラッシュしないようにメモリの問題を処理する方法はありますか? サーバー側から画像を縮小して、はるかに小さく管理しやすくしようとしました(ただし、これは適切な修正ではなく、応急処置のようです)。現在、生のバイトと BitmapFactory を使用して imageView をロードしています。しかし、別の方法があれば、実際の png または jpg で一時ファイルをいつでも作成できます。
誰かがこれを処理する最善の方法についてアドバイスを提供できますか?