在第一节中,我们使用Handler、Thread/Runnable 、URL、HttpURLConnection等等来进行异步下载网络图片。然后第二节中换了AsyncTask方式。那么这一节我们再应用其他方式,这个方式与第一节有点雷同,感觉走了一圈回到原地,只是风景更加美丽。人生很多时候也是如此,从NULL中来再回到NULL中。
那么它是谁呢?java.util.concurrent
java.util.concurrent 是在并发编程中很常用的实用工具类。
ExecutorService类:具有服务生命周期的Executors。
Executors 类:执行器,将为你管理Thread 对象。
我们知道这些是用来处理并发任务的,当然我们Demo只是请求一张图片而已,并不能体现并发,但是假设我们有一个ListView,里面每一项都需要一张网络图片显示呢?那么并发性就可以体现出来了:多个线程并发从网络下载图片。当然这个版本不会使用listView显示多个项图片,以后做个版本吧!研究下。
思路是这样的:
1:动态的创建N个线程,防在线程池中。
2:系统从线程池中取出一个线程投入执行,线程池中若没有线程可用,其他任务只有先等待了,直到有新线程释放,才调用。
如下有几个方法可以动态的指定多少个线程。
newFixedThreadPool(int nThreads) 指定线程个数
newCachedThreadPool() 系统为每个任务都建立一个线程
下面可以实现并发下载数据
case R.id.btnThress:
progress.setVisibility(View.VISIBLE);
final Handler newhandler=new Handler();
executorService.submit(new Runnable(){
@Override
public void run() {
try {
URL newurl = new URL(params);
HttpURLConnection conn = (HttpURLConnection)newurl.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream inputStream=conn.getInputStream();
bitmap = BitmapFactory.decodeStream(inputStream);
newhandler.post(new Runnable(){
@Override
public void run() {
ImageView view=(ImageView)frameLayout.findViewById(R.id.image);
view.setImageBitmap(bitmap);
}
});
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
break;
运行结果为:
分享到:
相关推荐
Android异步下载网络图片 (三个全) Android异步下载网络图片 (三个全) Android异步下载网络图片 (三个全) Android异步下载网络图片 (三个全) Android异步下载网络图片 (三个全) Android异步下载网络图片 ...
Android异步下载网络图片(其一) Android异步下载网络图片(其一) Android异步下载网络图片(其一) 源代码
写了一个图片异步加载类来下载缓存多张网络图片,实现类似新浪图片画廊自动播放幻灯片的效果。实现效果比较令人满意。如需改写只需要重新提供一个图片链接字符串数组即可
基于Android开发的异步加载网络图片
提供AsyncTask的使用实例 并通过异步下载网络图片 包括New Thread的是引用 Handler的使用
Android异步请求网络图片demo,博客地址:http://blog.csdn.net/yayun0516
android异步加载网络图片实例
项目中有时候需要获取网络上的图片,并下载下来到手机客户端显示。怎么做呢? 实现思路是: 1:在UI线程中启动一个线程,让这个线程去下载图片。 2:图片完成下载后发送一个消息去通知UI线程 2:UI线程获取到消息后,...
Android异步加载网络图片(线程),采用LruCache算法,使用线程回调接口,实现异步加载网络图片
Android 图片异步加载 加载网络图片
网上的很多代码只有AsyncImageLoader,没有PicUtils 我加上了PicUtils
android异步加载网络图片到ListView
一个很完整的android异步加载网络图片案例
Android AsyncTask用法和异步加载图片通过AsyncTask 从网络上异步加载一张图片
android Gallery实现异步加载网络图片 并只加载当前停止页面图
了解到网络给我们的应用带来丰富多彩的信息资源,带来好处的同时,却因为请求网络资源慢或者资源比较大,造成android部分网络延迟,用户体验下降,此项目就是来解决此问题的,供大家学习交流用撒.
一个非常好的 android gridview 异步加载图片的例子,需要17以上的api
异步任务网络下载图片一 Android 异步任务的使用与学习 网络连接与下载 网络获取数据 网络下载
Android banner 自动切换 异步加载网络图片
介绍得很详细,请看里面说明(Read Me)