码迷,mamicode.com
首页 > 其他好文 > 详细

AsyncTask下载图片

时间:2014-12-16 22:38:31      阅读:262      评论:0      收藏:0      [点我收藏+]

标签:android   异步   asynctask   imageview   

最近在看很早以前写过的代码,把一些东西回顾一下。本文先回顾一下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
    }

    <pre name="code" class="java">    //第一个参数的需要处理的数据,第二个参数是进度值,第三个参数是处理结果的类型
public class MyTask extends AsyncTask<String,Integer,Bitmap> { @Overrideprotected void onPostExecute(Bitmap result) {Log.d("", "onPostExecute"); updateImageView(result);//执行ui线程,已经有结果}@Overrideprotected void onPreExecute() {Log.d("", "onPreExecute");}@Overrideprotected 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) { //更新uiif (result != null) {ImageView img = (ImageView) findViewById(R.id.img);img.setImageBitmap(result);}}}


onProgressUpdate这里没有写 是更新进度值的。通过调用publishProgress



注意事项:不能在线程中 new AsyncTask 只能在ui线程中使用。不能在一个对象上调用2次execute方法

下一篇将详细解破AsyncTask源码。 若有问题,请指出 谢谢。




AsyncTask下载图片

标签:android   异步   asynctask   imageview   

原文地址:http://blog.csdn.net/birdsaction/article/details/41968147

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!