你好Android编码员
问题
我需要下载50张图片。问题是,用户在下载时无法使用该应用程序,这对用户的体验不利。
意图
我认为在使用应用程序时使用Universal Image Loader下载图像会是一个好主意。我现在遇到的问题是我不知道如何与AsyncTask一起使用它。我正在使用AsyncTask,因为我只加载前10个结果然后,当用户滚动到代码的末尾时,它会加载下10个结果。
我在片段中使用了AsyncTask。
遇到问题
我遇到的问题是如何正确实现Universal Image Loader
方法
到目前为止,我所做的是将ImageLoader库添加到库中并将其添加为库。然后,我创建了一个包含此内容的新类
package de.activevalue.ttflies;
import android.app.Application;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
/**
* Created with IntelliJ IDEA.
* User: pan
* Date: 28.10.13
* Time: 10:11
* To change this template use File | Settings | File Templates.
*/
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// Create global configuration and initialize ImageLoader with this configuration
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext()).build();
ImageLoader.getInstance().init(config);
}
}
然后,我还通过将此行android:name=".MyApplication"
添加到XML文件的<application ...
标记中来编辑Android Manifest XML。我没有把它添加为活动。我把它添加为一个名字。
但现在我遇到了一个问题。如果我理解正确的话,文档就说明要使用它
imageLoader.loadImage(imageURL, ImageView)
这里的问题是,我不能在doInBackground方法中使用它,因为我无法在那里更改布局。所以我必须在onPostExecute方法中这样做,但我遇到了问题。所以我想听听如何将这个通用图像加载器与Android中的AsyncTask结合使用的解决方案。
正如我所说,我包含了库,编辑了Android Manifest文件并为Application创建了一个类。但现在呢?
我在片段的onCreate方法中放了什么?我在哪里初始化imageLoader?我真的不知道在我的班级/片段中做什么,我需要imageLoader。
关于如何解决这个问题的任何建议?
答案 0 :(得分:0)
这是我的应用程序类:
public class UILApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
initImageLoader(getApplicationContext());
}
public static void initImageLoader(Context context) {
// This configuration tuning is custom. You can tune every option, you
// may tune some of them,
// or you can create default configuration by
// ImageLoaderConfiguration.createDefault(this);
// method.
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
context).threadPriority(Thread.NORM_PRIORITY - 2)
.denyCacheImageMultipleSizesInMemory()
.discCacheFileNameGenerator(new Md5FileNameGenerator())
.tasksProcessingOrder(QueueProcessingType.LIFO)
.writeDebugLogs() // Remove for release app
.build();
// Initialize ImageLoader with configuration.
ImageLoader.getInstance().init(config);
}
//我的活动:
图像加载器的创建对象:
private ImageLoader imageLoader = null;
我正在更新处理程序中的UI,如下所示:
Handler mHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case SET_ADAPTER:
imageLoader.displayImage(my URL, ImageView to show , Utils.options);
mHandler.removeMessages(SET_ADAPTER);
break;
default:
break;
}
};
};
最后是我的Utils课程。选项是,
public static DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheInMemory(true).cacheOnDisc(true)
.bitmapConfig(Bitmap.Config.RGB_565).build();
这对我来说很好。通用图像加载器提供了如此高质量的图像而不是其他库。