В БД сохранены ссылки на исображения которые локально хранятся на устройстве. При открытии лист вью я использую кастомный адаптер который загружает изображения по ссылкам
File filePath = new File(image); //image содержит ссылкуна изображение
Uri fileUri = Uri.fromFile(filePath);
final InputStream imageStream;
imageStream = context.getContentResolver().openInputStream(fileUri);
selectedImage = BitmapFactory.decodeStream(imageStream);
imageView.setImageBitmap(selectedImage);
проблема в том, что оно заметно тупит при прокручивании ленты и переодически вылетает по причине нехватки памяти. Я вынес загрузку изображений в отдельный поток и передаю в него строку image
mt = new MyTask();
mt.execute(image);
class MyTask extends AsyncTask<String, Void, Bitmap> {
private Bitmap selectedImage = null;
@Override
protected Bitmap doInBackground(String... params) {
String[] image = params;
try {
File filePath = new File(image[0]);
Uri fileUri = Uri.fromFile(filePath);
final InputStream imageStream;
imageStream = context.getContentResolver().openInputStream(fileUri);
selectedImage = BitmapFactory.decodeStream(imageStream);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// }
return selectedImage;
}
@Override
protected void onPostExecute(Bitmap result) {
super.onPostExecute(result);
imageView.setImageBitmap(selectedImage);
}
}
Предыдущая проблема решилась но появилась другая. Асин таск получает ссылки по одной штуке, по мере прокручивания, т.е. если на момент открытия лист вью в видимой области 3 изображения, загрузится только одно, остальные только по мере прокрутки. Как решить эту проблему, может есть более правильный сособ?
Правильный способ состоит в том, чтобы использовать специализированные библиотеки, которые правильно и человечно делают эту работу (подгрузку изображений).
Таких библиотек много, я лично предпочитаю Universal Image Loader
Альтернатив достаточно много развелось в последнее время, из них наверное можно выделить Picasso - как одну из наиболее продвинутых.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Имеется запись вида: List list; В абстрактном классеВ наследниках через конструктор, я его инициализирую
написал учебное приложение: бэк на java(Spring boot), а фронт на angularjsСейчас пытаюсь запустить приложение, томкэт запускается на порту 8080
Я запустил его в какой-то момент, и он был очень очень медленным, однако после того, как я закрыл его и открыл снова, он перестал работать с этой...