开源项目Universal Image Loader :ImageLoader must be init with configuration before using

相信很多同学都使用过Android Universal Image Loader 该开源项目。

今天把该开源代码和sample导入了正在写的app,代码是 这个 ,发现有不少注意的地方:

1.

如果发现导入的代码有错 ,检查一下是不是这个原因:

 //assets/ 目录下面的两个jpg文件的文件名乱码了,因而编不出R.java 从而工程提示R出错,只要把这两个文件改正常的名字即可。

2.

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

androidmanifest.xml 记得要增加权限。

 

当我把lib导入自己的项目,参考sample的时候发现run的时候还是出现了问题:

12-20 17:41:49.445: E/AndroidRuntime(6651): java.lang.NullPointerException

12-20 17:41:49.445: E/AndroidRuntime(6651):  at com.nostra13.universalimageloader.core.ImageLoader.stop(ImageLoader.java:441)

或者
12-20 17:42:31.460: E/AndroidRuntime(7101): java.lang.IllegalStateException: ImageLoader must be init with configuration before using

这是因为:

ImageLoader没有init

为啥没有init  --------------------->我们从Application继承过来的UILApplication没有跑

(UILApplication可是专门负责ImageLoader的config和init的)没有init 肯定是抛出NullPointerException了!

 

针对这种情况,我们有几方法可以修改:

1.在BaseActivity那里修改:

protected ImageLoader imageLoader = ImageLoader.getInstance();

后面增加ImageLoader的init函数:

 

	protected ImageLoader imageLoader = ImageLoader.getInstance();
	

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		
		imageLoader.init(ImageLoaderConfiguration.createDefault(this));
	}

这里我就专门overrideonCreate函数了,直接写里面去,这种方法可以跑,但是使用的是default的configuration了,有啥差别,有待研究,但是目前暂时没发现问题。

2.在AndroidManifest.xml中修改Application的属性,让UILApplication跑起来。

在没引入Android Universal Image Loader前,我的AndroidManifest.xml中的application配置是默认的,并没有android:name该属性。

        <application
        android:name="com.yourproject.UILApplication"//增加了这个属性
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

完美解决。

不过这里有个瑕疵:就是只要一启动这个application,就肯定把ImageLoader给创建了,不管你是否需要使用,她就在那里,不离不弃。
所以,你也可以在runtime的其他需要的时候在iniImageLoader是最好的

 

3.在其他地方写一个initImageLoader函数,参考sample代码写,需要的时候再把imageLoader创建。

欢迎大家指教。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值