2012-05-02 8 views
1

私は90以上の項目を持つListPickerを持つアプリケーションを設計しています。 各アイテムは、2つのPNG画像(それぞれ3個のサイズが<)とテキストで構成されています。Windows Phoneアプリのメモリ使用量を減らす

私は私の項目を表す新しいクラスを作成していると私はコード内の

List<ClassName> ClassNameList = new List<ClassName>(); 

を使用して、このクラスのリストを作成し、使用してリストに項目を追加しています:

ClassNameList.Add(new ClassName() {var1=..., var2=...}); 

私にcase、var1、var2は、プロジェクトに含まれるPNG画像へのパスです。

次に、<itemtemplate>のデータバインディングを使用して、アイテムをリストにバインドします。

エミュレータでListPickerを読み込むと、メモリ使用量が256MBを超えるようになります。 したがって、256MB RAMの新しい携帯電話用に私のアプリを提出することはできません。 メモリ使用量を減らす方法はありますか?

+0

ユーザーがビューに入り、古いアイテムを削除したときに、すべてのイメージを独立したストレージに格納し、ストレージからアイテムをロードしようとします。 –

+0

もう少し詳しく教えてください。特に、あなたが「古いアイテムを削除する」と言う部分。 – tumchaaditya

+0

画像をlistpickerに追加しています。例えばHをスクロールしてHとGの項目を読み込むと、他のすべてのアルファベット項目が削除されます。多くの例はリストボックスでの遅延読み込みに似ていますが、ここではユーザが到達すると上の項目を削除します特定の点。 –

答えて

1

イメージファイルのサイズは、同じ量のメモリを使用するわけではありません。多くの場合、画像は圧縮された形式(PNGの場合)で、ファイルサイズが小さくなります。しかしこれはメモリの使用量が少なくなるという意味ではありません。 this topicも読んでください(これはWPFについてですが、どんな状況でも同じ原則です)。

あなたの場合は分かりませんが、同じ画像がたくさんある場合は、画像をキャッシュすること(またはproxy patternなど)を考えて、メモリ内の重複画像を減らすことを考えてください。

+0

私はトピックを読む。ロードしようとしている画像はすでに60x60ピクセル未満です。だから、私はDecodedPixelWidthを使用してさらにポイントを参照しないでください – tumchaaditya

+0

また、MSDNのヒントやトリックを試すことができます:http://msdn.microsoft.com/en-us/library/cc716879.aspxさらに、多分あなたは怠惰な読み込みを見て、既にすべての画像を読み込むことはありません(また、表示された項目の近くにもない画像を「処分する」ことができます)。 – Styxxy

関連する問題