AsyncTask下载图片
最近在看一个非常早期曾经写过代码,装上去召回。本文首先召回AsyncTask的基本使用. AsyncTask说简单点就是
开启一个线程。而且把结果提交给ui线程。
Thread+Handler,只是里面做了一些封装 减轻了我们维护线程的麻烦。
先来写一个简单的样例,异步下载一个图片,显示到ImageView中。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new MyTask().execute("http://www.baidu.com/img/bdlogo.png");//下载一个baidu的logo
}
//第一个參数的须要处理的数据,第二个參数是进度值。第三个參数是处理结果的类型
public class MyTask extends AsyncTask<String,Integer,Bitmap> {
@Override
protected void onPostExecute(Bitmap result) {
Log.d("", "onPostExecute");
updateImageView(result);
}
@Override
protected void onPreExecute() {
Log.d("", "onPreExecute");
}
@Override
protected Bitmap doInBackground(String... args) {
String website = args[0];
HttpURLConnection conn = null;
InputStream ins = null;
try {
URL url = new URL(website);
conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
conn.setDoInput(true);
if (conn.getResponseCode() == 200) {
Log.d("", "get image is ok");
ins = conn.getInputStream();
return BitmapFactory.decodeStream(ins);
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ins != null) {
try {
ins.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return null;
}
}
public void updateImageView(Bitmap result) {
if (result != null) {
ImageView img = (ImageView) findViewById(R.id.img);
img.setImageBitmap(result);
}
}
}
onProgressUpdate这里没有写 是更新进度值的。通过调用publishProgress
注意事项:不能在线程中 new AsyncTask 仅仅能在ui线程中使用。不能在一个对象上调用2次execute方法,仅仅能用一次
下一篇将具体解破AsyncTask源代码。 若有问题。请指出 谢谢。
版权声明:本文博主原创文章,博客,未经同意不得转载。
AsyncTask下载图片的更多相关文章
- Android 异步任务——AsyncTask (附使用AsyncTask下载图片Demo)
我们编程的时候经常需要处理同步任务和异步任务,在Android里面存在一个特性,就是UI线程是不安全的线程.所谓UI线程不安全也就是我们的主线程(进程启动的第一个线程)不能在线程外操作主线程的资源.因 ...
- android 多线程 AsyncTask 下载图片
AsyncTask 下载图片 package com.test.network; import android.graphics.Bitmap; import android.graphics.Bit ...
- Android测试AsyncTask下载图片
package com.example.myact8_async; import org.apache.http.HttpEntity; import org.apache.http.HttpResp ...
- Android 使用AsyncTask 下载图片的例子,学会使用AsyncTask
1.添加布局文件:activity_main.xml 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res ...
- AsyncTask下载网络图片
MyTask task = new MyTask(); task.execute(url); class MyTask extends AsyncTask<String, Integer, Bi ...
- android 多线程下载图片
很多时候我们需要在Android设备上下载远程服务器上的图片进行显示,今天Android123整理出两种比较好的方法来实现远程图片的下载. 方法一.直接通过Android提供的Http类访问远程服 ...
- Android异步下载图片并且缓存图片到本地
Android异步下载图片并且缓存图片到本地 在Android开发中我们经常有这样的需求,从服务器上下载xml或者JSON类型的数据,其中包括一些图片资源,本demo模拟了这个需求,从网络上加载XML ...
- Android开发之异步获取并下载网络资源-下载图片和下载文本内容
在android网络开发过程中,经常需要获取网络资源,比如下载图片,下载文本文件内容等,这个时候就需要http请求来获取相应的网络资源.首先看看实例效果图: 下载图片截图 ...
- Android采用HttpClient下载图片
在上一章中谈到Android采用HttpURLConnection下载图片,本章使用HttpClient下载图片 HttpURLConnection与HttpClient的差别: HttpClient ...
随机推荐
- arduino串口输出问题
- (转)oracle表空间使用率统计查询
转自:http://www.cnblogs.com/xwdreamer/p/3511047.html 参考文献 文献1:http://blog.itpub.net/24104518/viewspace ...
- Eclipse手动配置svn
1.在Eclipse根目录下建一个任意文件夹(如plugin),在该文件夹下建一个以该插件名命名的文件夹(如SVN).2.将下载下的插件文件解压,plugins和features文件夹复制到该文件夹下 ...
- Transact-SQL语法速查手册
第1章 Transact-SQL基础 1.1 标识符 一.常规标识符 1. 命名规则: l 第一个字母必须是Unicode2.0标准定义的字母.下划线.at符号(@)和数字符号(#): l 后续字符可 ...
- Kinect开发笔记之三Kinect开发环境配置具体解释
0.前言: 首先说一下我的开发环境,Visual Studio是2013的,系统是win8的64位版本号,SDK是Kinect for windows SDK 1.8版本 ...
- Redis学习笔记(六)---List
1.ArrayList与LinkList的区别 ArrayList的使用数组存入的方式,所以根据索引查询数据速度快,而增删元素是比较慢的,它需要将数据一位一位的移动,知道达到要求. LinkList使 ...
- Ansible 管理服务和软件
[root@Ansible ~]# ansible RAC -m yum -a 'name=iscsi-initiator-utils state=installed' RAC_Node1 | suc ...
- 【例题5-5 UVA 12096 】The SetStack Computer
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 用set来解决这个问题. 考虑如何表示 { {{}} }这个集合 我们可以把{}这个集合和一个数字映射->1 然后把1加入到某 ...
- 各个RFC
RFC:Request For Comments(RFC),是一系列以编号排定的文件.文件收集了有关互联网相关信息,以及UNIX和互联网社区的软件文件.目前RFC文件是由Internet Societ ...
- Learn from Architects of Buildings
 Learn from Architects of Buildings Keith Braithwaite Architecture is a social act and the material ...