2011-07-21 5 views
0

私は自分のアクティビティを起動するたびに(実際には10が表示されるはずです)、ifアクティビティを起動するたびに、imageButtonとTextviewを追加するところの下に示すように、私はコード内にブレークポイントを保持し、10行すべてを正しく表示する問題を理解するためにゆっくりとデバッグします。私はそれがメモリから多くのメモリを必要と感じるWebから画像を取得しているので、コード内のメモリの問題でなければならないとは思っていません。レイアウトに追加した後にビューメモリを解放しようとしましたが、常にクラッシュしています。
私が間違っていることを教えてください。アンドロイドでのメモリリークを回避する方法

for (int i = 0; i < parsedExampleDataSet.getAppNameString().size(); i++) 
{ 
TableRow row = new TableRow(this); 
TextView tv = new TextView(this); 
tv.setText("AppName: "+ parsedExampleDataSet.getAppNameString().get(i) +"\n"  + "Description: " + parsedExampleDataSet.getDescriptionString().get(i)); 
ImageButton imgBtn = new ImageButton(this); 
URL aURL = new URL(parsedExampleDataSet.getImageUrlString().get(i)); 
URLConnection conn = aURL.openConnection(); 
conn.connect(); 
InputStream is = conn.getInputStream(); 
BufferedInputStream bis = new BufferedInputStream(is); 
Bitmap bm = BitmapFactory.decodeStream(bis); 
imgBtn.setImageBitmap(bm); 
imgBtn.setBackgroundColor(color.transparent); 
imgBtn.setTag(parsedExampleDataSet.getMarketLinkString().get(i)); 
bis.close(); 
is.close();      
row.addView(imgBtn); 
row.addView(tv); 
table.addView(row,new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); //here table is a tablelayout object 

}事前に

おかげであなたが利用ListViewコントロールよりも複数の行をロードする場合
Prathima

+0

スタックトレースとは何ですか? – Mudassir

+0

どのようにしてparsedExampleDataSetを取得しますか?それは別のスレッドで解析されていませんか?あなたはそれのプリントアウトサイズにしようとしましたか? – ania

+0

@ania :: noは同じスレッドで解析されません。私はサイズ()を印刷しようとしません。それは今行うでしょう。おかげで – Prathima

答えて

0

すべてのメモリの問題を処理し、TableLayoutよりも優れています。

hereが良い例です。

+0

ありがとう!私はアンドロイドに初心者です。最初はリストビューを使って実装しようとしましたが、コンセプトを正しく理解できませんでした。 Thatswhy私はtablelayoutを選んだ – Prathima

0

答えがparsedExampleDataSet.getAppNameString().size()に位置しているように見える:

  • あなたがプログラムを実行している場合は、for(;;)ループ反復するだけで4回

  • デバッガを実行すると、手動でそれを強化しています10回繰り返します。これはあなたの期待通りです。

どのように入力されたparsedExampleDataSet.getApp NameString()?そのサイズはfor(;;)ループの上限として使用され、時間の経過とともに変化するようです。非同期プロセス(スレッド)によって実装されるべきかどうかは、この問題を説明するでしょう。

詳細を追加してお知らせください。私はあなたが持って来る新しい要素にこの答えをさらに編集/精緻化します。

関連する問題