2016-08-13 4 views
0

私はAndroid.Graphics.Bitmapのリストを公開しているビューモデルを持っています(もっと良いことがあれば、ありがとう)。サンプル画像リソース(描画可能フォルダに追加)だけでビットマップのリストを入力しますか?

実際には、(バイトで表される)サービスからイメージデータが取得され、その後、バイトはAndroid.Graphics.Bitmapに変換されます。問題があるかどうかを調べるためにそのケースをテストしていません。現在開発中(クライアント側)のプロセスでは、drawableフォルダにサンプル画像リソースを1つだけ追加したいと考えています。イメージを表示するのに役立つリソースIDのリストが公開されている場合は、すべて問題ありません。しかし、どのような露出はAndroid.Graphics.Bitmapのリストであり、私はこのように、ビットマップに加え、画像リソースIDを変換するBitmapFactory.DecodeResource方法を用いて試みた:

//in the context of some Activity 
var images = new List<Bitmap>(); 
for(var i = 0; i < 30; i++){ 
    var bm = BitmapFactory.DecodeResource(Resources, Resource.Drawable.SampleImage); 
    images.Add(bm); 
} 

上記OutOfMemoryException(ラインvar bm...で投げ実行するコード)。

私はAndroidプログラミングの初心者ですから、この問題を解決することは本当に難しいです。例外は明らかですが、メモリが限られているように見えますが、イメージのサイズ、解像度などを減らしてコードを実行するのは嫌いです(リソースIDを介してイメージを表示するとすべてがうまく、イメージが表示されるそれは品質の低下なしにすべきである)。私は、Java開発者もこれを助けることができると思います

、ここでは、Javaのコードは次のとおりです。

//don't need to add the bitmap to any list, just like this will 
//throw the exception 
for(int i = 0; i < 30; i++){ 
    Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.sampleImage); 
    //... 
} 

はあなたの助けをありがとう!

UPDATE私の深いデバッグパー

は、例外は第20回ループ(I = 19)でスローされます。また、私が使用しているデバイスは、エミュレータ(Android用のVisual Studioエミュレータ)です。おそらく、エミュレータの制限のいくつかの種類です。私はそれが実際の物理的なデバイスのためにどのようになるか分からない。しかし、私はエミュレータで多くのアプリ(3Dゲーム)を走らせることができるので、エミュレータはうまくいくようです。

+0

は、ループ条件が「i <30」であることを意味していますか?本当に 'Bitmap'sが必要なのか' Drawable'はうまくいくのですか? – oldrinb

+0

@oldrinbはい、ありがとう、それはタイプミスです、私はすべてをタイプし、コピーして貼り付けませんでした。 – Hopeless

+0

このビットマップデコードループはどのくらいの頻度で発生しますか?一度? – oldrinb

答えて

0

あなたは、あなたのために提供されたメモリをビットマップでフラッディングしています。画像を効率的に読み込むためにPicasso libraryを見てください。画像を読み込む負担を軽減するには、リサイクラビューも使用してください。

+0

まず、メモリが限られていると私は理解していますが、実際には「19 * 140KB = 2660KB」の量で驚いていますが、アプリは50MB以上のRAMを消費する可能性があります。それは、デバイスではなく、Androidで設計された***のような制限です。私が探しているのは解決策です(私が言ったように、実際には説明ではなく、単に 'sampleable image '(' drawable'に追加されています)からデモイメージ( 'Bitmap'にロード)を表示します。いくつかのWebサービスから画像をロードしていますか?(画像は一部のデータベースに直接保存されるため、URLからではありません)。 – Hopeless

関連する問題