gpt4 book ai didi

java - 修复 ImageLoader : "Try to initialize ImageLoader which had already been initialized before" 的警告

转载 作者:太空狗 更新时间:2023-10-29 15:30:05 25 4
gpt4 key购买 nike

在我的应用程序中,我有一个包含一些项目的 ListView 。每个项目都有一个从远程 url 下载的 img。

我使用 ImageLoader 库将每个图像加载到我的应用中。

我的 ListView 构建良好,我有所有图像,但我在 LogCat 中有一个警告:

02-05 15:16:17.938: W/ImageLoader(17363): Try to initialize ImageLoader which had already been initialized before. To re-init ImageLoader with new configuration call ImageLoader.destroy() at first.

我不知道如何解决这个问题?

这是我的适配器的代码:

public class ArticleListAdapterHome extends ArrayAdapter<ArticleHome> {

Typeface faceLight = Typeface.createFromAsset(getContext().getAssets(), "fonts/Roboto-Light.ttf");
Typeface faceBold = Typeface.createFromAsset(getContext().getAssets(), "fonts/Roboto-Bold.ttf");

public ArticleListAdapterHome(Activity activity, List<ArticleHome> articles) {
super(activity, 0, articles);
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {

Activity activity = (Activity) getContext();

LayoutInflater inflater = activity.getLayoutInflater();

View rowView;
ArticleHome article = getItem(position);

if (position == 0) {

rowView = inflater.inflate(R.layout.item_ligne_home_premier, null);

////////////////////////////////////////////////////////
///// IMAGE
///////////////////////////////////////////////////////
ImageView imgfirst = (ImageView) rowView.findViewById(R.id.imgimg) ;

DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisc(true)
.build();

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getContext())
.defaultDisplayImageOptions(options)
.threadPriority(Thread.MAX_PRIORITY)
.denyCacheImageMultipleSizesInMemory()
.memoryCacheSize(2 * 1024 * 1024)
.build();

ImageLoader imageLoader = ImageLoader.getInstance();
imageLoader.init(config);
imageLoader.displayImage(article.getImage(), imgfirst);

ListView listV = (ListView)parent;
boolean pauseOnScroll = false; // or true
boolean pauseOnFling = true; // or false
PauseOnScrollListener listener = new PauseOnScrollListener(imageLoader, pauseOnScroll, pauseOnFling);
listV.setOnScrollListener(listener);

////////////////////////////////////////////////////////
///// TITLE
///////////////////////////////////////////////////////
TextView textView = (TextView) rowView.findViewById(R.id.titlepremier);
textView.setText(article.getTitle());
textView.setTypeface(faceLight);
}
else {
rowView = inflater.inflate(R.layout.item_ligne_home, null);

////////////////////////////////////////////////////////
///// IMAGE
///////////////////////////////////////////////////////
ImageView img = (ImageView) rowView.findViewById(R.id.imgimg) ;

DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisc(true)
.build();

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getContext())
.defaultDisplayImageOptions(options)
.threadPriority(Thread.MAX_PRIORITY)
.denyCacheImageMultipleSizesInMemory()
.memoryCacheSize(2 * 1024 * 1024)
.build();

ImageLoader imageLoader = ImageLoader.getInstance();
imageLoader.init(config);
imageLoader.displayImage(article.getImage(), img);

ListView listV = (ListView)parent;
boolean pauseOnScroll = false; // or true
boolean pauseOnFling = true; // or false
PauseOnScrollListener listener = new PauseOnScrollListener(imageLoader, pauseOnScroll, pauseOnFling);
listV.setOnScrollListener(listener);

////////////////////////////////////////////////////////
///// TITLE
///////////////////////////////////////////////////////
TextView title = (TextView) rowView.findViewById(R.id.titlearticleothers);
title.setText(article.getTitle());
title.setTypeface(faceBold);

////////////////////////////////////////////////////////
///// DESCRIPTION
///////////////////////////////////////////////////////
TextView desc = (TextView) rowView.findViewById(R.id.descriptionarticleothers);
desc.setText(article.getDescription());
desc.setTypeface(faceLight);

////////////////////////////////////////////////////////
///// DATE
///////////////////////////////////////////////////////
TextView date = (TextView) rowView.findViewById(R.id.date);
String pubDate = article.getPubDate();
SimpleDateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy kk:mm:ss Z", Locale.ENGLISH);
Date pDate;
try {
pDate = df.parse(pubDate);
pubDate = DateUtils.getDateDifference(pDate);
pubDate = pubDate.replace("-", "");
} catch (ParseException e) {
Log.e("DATE PARSING", "Error parsing date..");
pubDate = "published by " + article.getAuthor();
}
date.setText("Il y a " +pubDate);

}

return rowView;

}

最佳答案

当您尝试初始化已经初始化的 ImageLoader 时会发生此错误。

在我的应用程序中,我在不同的 Activity 中以两种方式初始化了 ImageLoader:

1:

imageLoader.init(ImageLoaderConfiguration.createDefault(this.getSherlockActivity()));

2:

initImageLoader(); //where this function contained the configuration settings.

在我的应用程序中,我使用了导致此错误的 ViewPager,这就是原因:

重要的是要知道,当您在 ViewPager 中打开一个选项卡时,它会自动在后台加载第二个选项卡。

假设此初始化是在第一个选项卡上设置的。因此,当您转到第二个和第三个选项卡时,您会返回到第二个选项卡,然后加载第一个选项卡并尝试再次初始化 ImageLoader。

您需要做的是检查它是否已初始化

if (!imageLoader.isInited()) {
initImageLoader();
}

关于java - 修复 ImageLoader : "Try to initialize ImageLoader which had already been initialized before" 的警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21579826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com