各リスト項目に 5 つのエントリがあり、これらのエントリが SQLite データベースから取得されるカスタム リストビューがあります。このリストビューには、そのような 8 つのリスト項目があります。カスタムアダプターの私のコードは次のとおりです。
public class VaccinListAdapter extends BaseAdapter
{
private Context context;
private List<VaccinInfoPOJO> vaccinInfo;
public VaccinListAdapter(Context c,List<VaccinInfoPOJO> list)
{
context=c;
vaccinInfo=list;
}
@Override
public int getCount() {
return vaccinInfo.size();
}
@Override
public Object getItem(int pos) {
return vaccinInfo.get(pos);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int position, View convertView, ViewGroup viewGroup) {
ViewHolder holder;
VaccinInfoPOJO entry=vaccinInfo.get(position);
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.vaccin_list_style, null);
holder=new ViewHolder();
holder.diseasevalue=(TextView)convertView.findViewById(R.id.vaccin_lv_disease);
holder.animals=(TextView)convertView.findViewById(R.id.vaccin_lv_animalnames);
holder.vaccinname= (TextView)convertView.findViewById(R.id.vaccin_lv_vaccinname);
holder.dosevalue=(TextView)convertView.findViewById(R.id.vaccin_lv_dosagevalue);
holder.timevalue= (TextView)convertView.findViewById(R.id.vaccin_lv_timevalue);
convertView.setTag(holder);
}
else {
holder = (ViewHolder) convertView.getTag();
}
holder.diseasevalue.setText(entry.getDisease());
holder.animals.setText(entry.getAnimal());
holder.vaccinname.setText(entry.getVaccine());
holder.dosevalue.setText(entry.getDose());
holder.timevalue.setText(entry.getTime());
return convertView;
}
}
そして、ここで提案されているように、このViewHolderクラスを使用しています:
static class ViewHolder
{
TextView diseasevalue,animals,vaccinname,dosevalue,timevalue;
}
この成長ヒープ シーケンスの長いストリームの後、メモリ不足の例外が発生しています::
04-18 09:42:46.033: DEBUG/dalvikvm(370): GC_CONCURRENT freed 45K, 21% free 10597K/13255K, external 1055K/1567K, paused 10ms+10ms
04-18 09:42:48.154: INFO/dalvikvm-heap(370): Clamp target GC heap from 17.901MB to 16.000MB
04-18 09:42:48.154: DEBUG/dalvikvm(370): GC_CONCURRENT freed 68K, 18% free 12622K/15303K, external 1055K/1567K, paused 10ms+11ms
04-18 09:42:48.673: INFO/dalvikvm-heap(370): Clamp target GC heap from 18.030MB to 16.000MB
04-18 09:42:48.673: DEBUG/dalvikvm(370): GC_CONCURRENT freed <1K, 18% free 12754K/15367K, external 1055K/1567K, paused 11ms+12ms
04-18 09:42:48.893: INFO/dalvikvm-heap(370): Clamp target GC heap from 18.030MB to 16.000MB
04-18 09:42:48.893: DEBUG/dalvikvm(370): GC_FOR_MALLOC freed 0K, 18% free 12754K/15367K, external 1055K/1567K, paused 219ms
04-18 09:42:48.893: INFO/dalvikvm-heap(370): Clamp target GC heap from 16.030MB to 16.000MB
04-18 09:42:48.893: INFO/dalvikvm-heap(370): Grow heap (frag case) to 16.000MB for 24-byte allocation
04-18 09:42:49.194: INFO/dalvikvm-heap(370): Clamp target GC heap from 18.030MB to 16.000MB
04-18 09:42:49.194: DEBUG/dalvikvm(370): GC_FOR_MALLOC freed 0K, 18% free 12754K/15367K, external 1055K/1567K, paused 219ms
04-18 09:42:49.204: INFO/dalvikvm-heap(370): Forcing collection of SoftReferences for 24-byte allocation
04-18 09:42:49.414: INFO/dalvikvm-heap(370): Clamp target GC heap from 18.015MB to 16.000MB
04-18 09:42:49.414: DEBUG/dalvikvm(370): GC_FOR_MALLOC freed 14K, 18% free 12740K/15367K, external 1055K/1567K, paused 212ms
04-18 09:42:49.414: INFO/dalvikvm-heap(370): Clamp target GC heap from 16.015MB to 16.000MB
04-18 09:42:49.794: INFO/dalvikvm-heap(370): Clamp target GC heap from 18.015MB to 16.000MB
04-18 09:42:49.794: DEBUG/dalvikvm(370): GC_CONCURRENT freed 0K, 18% free 12740K/15367K, external 1055K/1567K, paused 6ms+6ms
04-18 09:42:50.014: INFO/dalvikvm-heap(370): Clamp target GC heap from 18.015MB to 16.000MB
04-18 09:42:50.014: DEBUG/dalvikvm(370): GC_FOR_MALLOC freed 0K, 18% free 12740K/15367K, external 1055K/1567K, paused 214ms
04-18 09:42:50.014: INFO/dalvikvm-heap(370): Clamp target GC heap from 16.016MB to 16.000MB
04-18 09:42:50.014: INFO/dalvikvm-heap(370): Grow heap (frag case) to 16.000MB for 60-byte allocation
04-18 09:42:50.314: INFO/dalvikvm-heap(370): Clamp target GC heap from 18.016MB to 16.000MB
04-18 09:42:50.314: DEBUG/dalvikvm(370): GC_FOR_MALLOC freed 0K, 18% free 12740K/15367K, external 1055K/1567K, paused 223ms
04-18 09:42:50.324: INFO/dalvikvm-heap(370): Clamp target GC heap from 16.016MB to 16.000MB
04-18 09:42:50.324: INFO/dalvikvm-heap(370): Grow heap (frag case) to 16.000MB for 8-byte allocation
04-18 09:42:50.724: INFO/dalvikvm-heap(370): Clamp target GC heap from 18.016MB to 16.000MB
04-18 09:42:50.724: DEBUG/dalvikvm(370): GC_CONCURRENT freed 0K, 18% free 12740K/15367K, external 1055K/1567K, paused 16ms+5ms
04-18 09:42:50.994: INFO/dalvikvm-heap(370): Clamp target GC heap from 18.015MB to 16.000MB
04-18 09:42:50.994: DEBUG/dalvikvm(370): GC_FOR_MALLOC freed <1K, 18% free 12740K/15367K, external 1055K/1567K, paused 247ms
04-18 09:42:51.004: INFO/dalvikvm-heap(370): Clamp target GC heap from 16.016MB to 16.000MB
04-18 09:42:51.004: INFO/dalvikvm-heap(370): Grow heap (frag case) to 16.000MB for 24-byte allocation
04-18 09:42:51.304: INFO/dalvikvm-heap(370): Clamp target GC heap from 18.016MB to 16.000MB
04-18 09:42:51.304: DEBUG/dalvikvm(370): GC_FOR_MALLOC freed 0K, 18% free 12740K/15367K, external 1055K/1567K, paused 226ms
04-18 09:42:51.314: INFO/dalvikvm-heap(370): Clamp target GC heap from 16.016MB to 16.000MB
04-18 09:42:51.314: INFO/dalvikvm-heap(370): Grow heap (frag case) to 16.000MB for 24-byte allocation
04-18 09:42:51.724: INFO/dalvikvm-heap(370): Clamp target GC heap from 18.016MB to 16.000MB
04-18 09:42:51.724: DEBUG/dalvikvm(370): GC_CONCURRENT freed 0K, 18% free 12740K/15367K, external 1055K/1567K, paused 20ms+6ms
04-18 09:42:51.934: INFO/dalvikvm-heap(370): Clamp target GC heap from 18.016MB to 16.000MB
04-18 09:42:51.934: DEBUG/dalvikvm(370): GC_FOR_MALLOC freed 0K, 18% free 12740K/15367K, external 1055K/1567K, paused 207ms
04-18 09:42:51.934: INFO/dalvikvm-heap(370): Clamp target GC heap from 16.016MB to 16.000MB
04-18 09:42:51.934: INFO/dalvikvm-heap(370): Grow heap (frag case) to 16.000MB for 8-byte allocation
今どこに行きますか?どんな助けもかなりのものです。
編集::
私は大きなばかげた間違いを犯していました。Arraylist にデータを入力するループを実行していたとき、ループは次のようになりました。
for(cursor.moveToFirst();!cursor.isAfterLast();cursor.moveToFirst())
ここでは、最後の moveToFirst がこのループを無限状態にしていました。moveToNextに変更しました。おっと...神のご加護がありますように.!!!