修复ImageLoader的一个警告:"尝试初始化ImageLoader的哪些已经被之前与QUOT初始化; [英] Fix a warning of ImageLoader : "Try to initialize ImageLoader which had already been initialized before"

查看:2044
本文介绍了修复ImageLoader的一个警告:"尝试初始化ImageLoader的哪些已经被之前与QUOT初始化;的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的应用程序,我有一些项目列表视图。每个项目都有它从遥远的URL下载的IMG。

我用ImageLoader的库加载每个图像到我的应用程序。

我的列表视图精心打造,我把所有的图像,但我有在LogCat中警告:

  

02-05 15:16:17.938:W / ImageLoader的(17363):尝试初始化   ImageLoader的其中已经被初始化之前。要重新初始化   ImageLoader的新配置的呼叫ImageLoader.destroy()在   第一位。

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

下面我适配器的code:

 公共类ArticleListAdapterHome扩展ArrayAdapter< ArticleHome> {

    字样faceLight = Typeface.createFromAsset(的getContext()getAssets(),字体/ Roboto-Light.ttf。);
    字样faceBold = Typeface.createFromAsset(的getContext()getAssets(),字体/ Roboto-Bold.ttf。);

    公共ArticleListAdapterHome(活动活动,列表和LT; ArticleHome>文章){
        超(活动,0,文章);
    }


    @覆盖
    公共查看getView(INT位置,查看convertView,ViewGroup中父){

        活动活性=(活动)的getContext();

        LayoutInflater充气= activity.getLayoutInflater();

        查看rowView;
        ArticleHome文章=的getItem(位置);

        如果(位置== 0){

            rowView = inflater.inflate(R.layout.item_ligne_home_ premier,NULL);

            ////////////////////////////////////////////////// //////
            ///// 图像
            ////////////////////////////////////////////////// /////
            ImageView的imgfirst =(ImageView的)rowView.findViewById(R.id.imgimg);

            DisplayImageOptions选项=新DisplayImageOptions.Builder()
            .cacheInMemory(真)
            .cacheOnDisc(真)
            。建立();

            ImageLoaderConfiguration配置=新ImageLoaderConfiguration.Builder(的getContext())
            .defaultDisplayImageOptions(选项)
            .threadPriority(Thread.MAX_PRIORITY)
            .denyCacheImageMultipleSizesInMemory()
            .memoryCacheSize(2 * 1024 * 1024)
            。建立();

            ImageLoader的ImageLoader的= ImageLoader.getInstance();
            imageLoader.init(配置);
            imageLoader.displayImage(article.getImage(),imgfirst);

            ListView控件listV =(ListView控件)父母;
            布尔pauseOnScroll = FALSE; //或真
            布尔pauseOnFling = TRUE; //还是假的
            PauseOnScrollListener监听器=新PauseOnScrollListener(ImageLoader的,pauseOnScroll,pauseOnFling);
            listV.setOnScrollListener(听众);

            ////////////////////////////////////////////////// //////
            ///// 标题
            ////////////////////////////////////////////////// /////
            TextView中的TextView =(TextView中)rowView.findViewById(R.id.title premier);
            textView.setText(article.getTitle());
            textView.setTypeface(faceLight);
        }
        其他 {
            rowView = inflater.inflate(R.layout.item_ligne_home,NULL);

            ////////////////////////////////////////////////// //////
            ///// 图像
            ////////////////////////////////////////////////// /////
            ImageView的IMG =(ImageView的)rowView.findViewById(R.id.imgimg);

            DisplayImageOptions选项=新DisplayImageOptions.Builder()
            .cacheInMemory(真)
            .cacheOnDisc(真)
            。建立();

            ImageLoaderConfiguration配置=新ImageLoaderConfiguration.Builder(的getContext())
            .defaultDisplayImageOptions(选项)
            .threadPriority(Thread.MAX_PRIORITY)
            .denyCacheImageMultipleSizesInMemory()
            .memoryCacheSize(2 * 1024 * 1024)
            。建立();

            ImageLoader的ImageLoader的= ImageLoader.getInstance();
            imageLoader.init(配置);
            imageLoader.displayImage(article.getImage(),IMG);

            ListView控件listV =(ListView控件)父母;
            布尔pauseOnScroll = FALSE; //或真
            布尔pauseOnFling = TRUE; //还是假的
            PauseOnScrollListener监听器=新PauseOnScrollListener(ImageLoader的,pauseOnScroll,pauseOnFling);
            listV.setOnScrollListener(听众);

            ////////////////////////////////////////////////// //////
            ///// 标题
            ////////////////////////////////////////////////// /////
            TextView的标题=(TextView中)rowView.findViewById(R.id.titlearticleothers);
            title.setText(article.getTitle());
            title.setTypeface(faceBold);

            ////////////////////////////////////////////////// //////
            ///// 描述
            ////////////////////////////////////////////////// /////
            TextView的递减=(TextView中)rowView.findViewById(R.id.descriptionarticleothers);
            desc.setText(article.getDescription());
            desc.setTypeface(faceLight);

            ////////////////////////////////////////////////// //////
            ///// 日期
            ////////////////////////////////////////////////// /////
            TextView的日期=(TextView中)rowView.findViewById(R.id.date);
            字符串相关的摘录= article.getPubDate();
            SimpleDateFormat的DF =新的SimpleDateFormat(EEE,DD MMM YYYY KK:MM:SS Z,Locale.ENGLISH);
            日期PDATE;
            尝试 {
                PDATE = df.parse(pubdate的);
                pubdate的= DateUtils.getDateDifference(PDATE);
                相关的摘录= pubDate.replace( - ,);
            }赶上(ParseException的E){
                Log.e(DATE PARSING,错误分析日期。);
                pubdate的= + article.getAuthor发表();
            }
            date.setText(伊尔Y A+ pubdate的);

        }

        返回rowView;

    }
 

解决方案

当你试图初始化ImageLoader的时候已经是初始化时出现此错误。

在我的应用我初始化ImageLoader的两种方式在不同的活动:

1

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

2

  initImageLoader(); //其中该功能包含配置设置。
 

在我的应用程序,我使用的是 ViewPager 这将导致这个错误,这是为什么:

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

让我们说这个初始化设置第一个选项卡上。所以,当你去了第二个和第三个选项卡,然后你再回到第二个选项卡,然后第一个被加载并尝试重新初始化ImageLoader的。

您需要做的是检查如果它被初始化

 如果(!imageLoader.isInited()){
    initImageLoader();
 }
 

In my app, i have a listview with some items. Each item has a img which is downloaded from distant url.

I use ImageLoader library to load each image into my app.

My listview is well built, i have all images, but i have a warning in 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.

I don't know how to fix this issue ?

Here the code of my adapter :

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;

    } 

解决方案

This error occurs when you are trying to initialize ImageLoader when it is already initialized.

In my app I initialized ImageLoader two ways in different activities:

1:

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

2:

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

In my app I am using a ViewPager which causes this error and this is why:

It's important to know that when you open a tab in the ViewPager it automatically loads the second tab in the background.

Let's say this initialization was set on the first tab. So when you go to the second and the third tab then you go back to the second tab then the first one is loaded and it tries to initialize ImageLoader again.

What you need to do is check if it was initialized

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

这篇关于修复ImageLoader的一个警告:&QUOT;尝试初始化ImageLoader的哪些已经被之前与QUOT初始化;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆