Проблема Out Of Memory
Добавлено: 31 янв 2014, 18:13
Нашел место в котором вылетает программа, выдает Out Of Memory.
Весь класс:
Хандлер handle:
Проблемное место в классе:
Если вместо smallImage отправлять нул или любую картинку из ресурсов, то отлично работает, если отправлять smallImage то вылетает через определенное количество раз вызова класса.
То есть, если просто убрать smallImage и вставить null то все отлично работает, то есть проблема не в функции BlobToDrawable().
Что тут может быть?
Весь класс:
Код: Выделить всё
public class BDInListView extends Thread {
String[] NewsAfterDate;
BDInListView(String newsAfterDate) {
NewsAfterDate = new String[] { newsAfterDate };
}
public void run() {
ClassForBD DBClass = new ClassForBD(MainActivity.this);
SQLiteDatabase BD = DBClass.getWritableDatabase();
Cursor c = BD.query("NewsRadio24", null, "UpdateDate<?",
NewsAfterDate, null, null, "UpdateDate DESC");
Drawable smallImage= null;
try {
if (c.moveToFirst()) {
int idColIndex = c.getColumnIndex("ID_In_Site");
int nameColIndex = c.getColumnIndex("Name");
int annotationColIndex = c.getColumnIndex("Annotation");
int summaryColIndex = c.getColumnIndex("Summary");
int updateDateColIndex = c.getColumnIndex("UpdateDate");
int SmallImagePathColIndex = c
.getColumnIndex("SmallImagePath");
int NormalImagePathColIndex = c
.getColumnIndex("NormalImagePath");
int SmallImageColIndex = c.getColumnIndex("SmallImage");
int NormalImageColIndex = c.getColumnIndex("NormalImage");
do {
int id_news = c.getInt(idColIndex);
String name_news = c.getString(nameColIndex);
String annotation_news = c
.getString(annotationColIndex);
String summary_news = c.getString(summaryColIndex);
String updateDate_news = MilisecToDate(c
.getString(updateDateColIndex));
String imgnormalPath = c
.getString(NormalImagePathColIndex);
String imgsmallPath = c
.getString(SmallImagePathColIndex);
byte[] smallImageBlob = c.getBlob(SmallImageColIndex);
byte[] normalImageBlob = c.getBlob(NormalImageColIndex);
smallImage = BlobToDrawable(smallImageBlob);
SearchResultItem item = new SearchResultItem(id_news,
smallImage, name_news, updateDate_news,
summary_news, annotation_news, null);
smallImage=null;
Message msg = handle.obtainMessage(1, item);
handle.sendMessage(msg);
} while (c.moveToNext());
} else
Log.d("End read", "0 rows");
} finally {
c.close();
}
Message m = EndAddingInListvew.obtainMessage(1, ")");
EndAddingInListvew.sendMessage(m);
}
}Код: Выделить всё
handle = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
adapter.add((SearchResultItem) msg.obj);
adapter.notifyDataSetChanged();
msg.obj = null;
}
};
Код: Выделить всё
SearchResultItem item = new SearchResultItem(id_news,
smallImage, name_news, updateDate_news,
summary_news, annotation_news, null);То есть, если просто убрать smallImage и вставить null то все отлично работает, то есть проблема не в функции BlobToDrawable().
Что тут может быть?