Я использую библиотеку volley для загрузки сетевых ответов. Я умею загружать изображения только тогда, когда это необходимо. Но чего я хочу добиться, так это загрузить все изображения за раз и сохранить их в своей кэш-памяти.
Итак, в основном я хочу загрузить все изображения сразу и сохранить в кеше, чтобы, если не будет интеренет, пользователь также мог видеть все изображения.
Я могу хранить изображения в кеше, используя свой собственный класс LruBitmapCache
. И для загрузки изображений я использую следующий метод.
public void downloadImage(NetworkImageView view, MyApplication application, String imageUrl, Context ctx) {
NetworkImageView image = view;
ImageLoader loader = new ImageLoader(application.getRequestQueue(), new LruBitmapCache(
LruBitmapCache.getCacheSize(ctx)));
image.setImageUrl(imageUrl, loader);
}
Это отлично работает при загрузке изображений и сохранении в кеше. Но это только загрузка изображений, которые находятся на моем главном экране.
Чтобы загрузить все изображения, я попробовал следующий метод
public void downloadCoverImages(){
int i = 0;
for(ImageData data: GetData._instance.getImageList()){
NetworkImageView iv = new NetworkImageView(BaseActivity.this);
iv.setLayoutParams(new LinearLayout.LayoutParams(300,150));
GetData._instance.downloadImage(iv, (MyApplication) getApplicationContext(),
data.getImages().getSmallImage(),BaseActivity.this);
//Log.e("Download",++i+" "+data.getImages().getSmallImage());
}
}
Но я думаю, что для загрузки изображения не требуется правильный ImageView, и это также необходимо на главном экране. Так что в этом случае мне делать?
Мой одноэлементный класс выглядит следующим образом:
public enum GetData {
_instance;
private List<Sections> sectionsList = new ArrayList<Sections>();
private List<DealDetails> dealDetailsList = new ArrayList<DealDetails>();
private DealDetails dealDetails;
public List<Sections> getSectionsList() {
return sectionsList;
}
public void setSectionsList(List<Sections> sectionsList) {
this.sectionsList = sectionsList;
}
public List<DealDetails> getDealDetailsList() {
return dealDetailsList;
}
public void setDealList(List<DealDetails> dealDetailsList) {
this.dealDetailsList = dealDetailsList;
}
public DealDetails getDealDetails() {
return dealDetails;
}
public void setDealDetails(DealDetails dealDetails) {
this.dealDetails = dealDetails;
}
public void downloadImage(NetworkImageView view, MyApplication application, String imageUrl, Context ctx) {
NetworkImageView image = view;
ImageLoader loader = new ImageLoader(application.getRequestQueue(), new LruBitmapCache(
LruBitmapCache.getCacheSize(ctx)));
image.setImageUrl(imageUrl, loader);
}
}
Возможно ли, если я загружу изображение без использования залпа, сохраню в своем LRUCache и покажу его с помощью залпа? Любой хороший учебник для этого? Спасибо.