最近在看一个非常早期曾经写过代码,装上去召回。本文首先召回AsyncTask的基本使用.   AsyncTask说简单点就是
开启一个线程。而且把结果提交给ui线程。

Thread+Handler,只是里面做了一些封装 减轻了我们维护线程的麻烦。

先来写一个简单的样例,异步下载一个图片,显示到ImageView中。

  1. public class MainActivity extends Activity {
  2.  
  3. @Override
  4. protected void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.activity_main);
  7. new MyTask().execute("http://www.baidu.com/img/bdlogo.png");//下载一个baidu的logo
  8. }
  9.  
  10. //第一个參数的须要处理的数据,第二个參数是进度值。第三个參数是处理结果的类型
  1.  

  1. public class MyTask extends AsyncTask<String,Integer,Bitmap> {
  2.  
  3. @Override
  4. protected void onPostExecute(Bitmap result) {
  5. Log.d("", "onPostExecute");
  6. updateImageView(result);
  7. }
  8.  
  9. @Override
  10. protected void onPreExecute() {
  11. Log.d("", "onPreExecute");
  12. }
  13.  
  14. @Override
  15. protected Bitmap doInBackground(String... args) {
  16. String website = args[0];
  17. HttpURLConnection conn = null;
  18. InputStream ins = null;
  19. try {
  20. URL url = new URL(website);
  21. conn = (HttpURLConnection) url.openConnection();
  22. conn.setConnectTimeout(5000);
  23. conn.setDoInput(true);
  24. if (conn.getResponseCode() == 200) {
  25. Log.d("", "get image is ok");
  26. ins = conn.getInputStream();
  27. return BitmapFactory.decodeStream(ins);
  28. }
  29. } catch (MalformedURLException e) {
  30. e.printStackTrace();
  31. } catch (IOException e) {
  32. e.printStackTrace();
  33. } finally {
  34. if (ins != null) {
  35. try {
  36. ins.close();
  37. } catch (IOException e) {
  38. e.printStackTrace();
  39. }
  40. }
  41. }
  42. return null;
  43. }
  44.  
  45. }
  46.  
  47. public void updateImageView(Bitmap result) {
  48. if (result != null) {
  49. ImageView img = (ImageView) findViewById(R.id.img);
  50. img.setImageBitmap(result);
  51.  
  52. }
  53.  
  54. }
  55.  
  56. }

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

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

下一篇将具体解破AsyncTask源代码。 若有问题。请指出 谢谢。

版权声明:本文博主原创文章,博客,未经同意不得转载。

AsyncTask下载图片的更多相关文章

  1. Android 异步任务——AsyncTask (附使用AsyncTask下载图片Demo)

    我们编程的时候经常需要处理同步任务和异步任务,在Android里面存在一个特性,就是UI线程是不安全的线程.所谓UI线程不安全也就是我们的主线程(进程启动的第一个线程)不能在线程外操作主线程的资源.因 ...

  2. android 多线程 AsyncTask 下载图片

    AsyncTask 下载图片 package com.test.network; import android.graphics.Bitmap; import android.graphics.Bit ...

  3. Android测试AsyncTask下载图片

    package com.example.myact8_async; import org.apache.http.HttpEntity; import org.apache.http.HttpResp ...

  4. Android 使用AsyncTask 下载图片的例子,学会使用AsyncTask

    1.添加布局文件:activity_main.xml 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res ...

  5. AsyncTask下载网络图片

    MyTask task = new MyTask(); task.execute(url); class MyTask extends AsyncTask<String, Integer, Bi ...

  6. android 多线程下载图片

    很多时候我们需要在Android设备上下载远程服务器上的图片进行显示,今天Android123整理出两种比较好的方法来实现远程图片的下载.   方法一.直接通过Android提供的Http类访问远程服 ...

  7. Android异步下载图片并且缓存图片到本地

    Android异步下载图片并且缓存图片到本地 在Android开发中我们经常有这样的需求,从服务器上下载xml或者JSON类型的数据,其中包括一些图片资源,本demo模拟了这个需求,从网络上加载XML ...

  8. Android开发之异步获取并下载网络资源-下载图片和下载文本内容

    在android网络开发过程中,经常需要获取网络资源,比如下载图片,下载文本文件内容等,这个时候就需要http请求来获取相应的网络资源.首先看看实例效果图:              下载图片截图   ...

  9. Android采用HttpClient下载图片

    在上一章中谈到Android采用HttpURLConnection下载图片,本章使用HttpClient下载图片 HttpURLConnection与HttpClient的差别: HttpClient ...

随机推荐

  1. Rick's RoTs -- Rules of Thumb for MySQL--转载

    原文地址:http://mysql.rjweb.org/doc.php/ricksrots Brought to you by Rick James Here are 160+ tips, trick ...

  2. redis 模糊删除实现

    redis 没有直接提供模糊删除的实现,我们可以根据现有的指令进行组合实现: import java.util.Arrays; import java.util.Set; import javax.a ...

  3. JQ实现选项卡(jQuery原型插件扩展)

    下边分为两个版本,一种是点击切换选项(index.js),一种是滑过切换选项(index1.js) HTML文件: jq使用jquery-1.11.3.js版本 <!DOCTYPE html&g ...

  4. [Angular] New async 'as' syntax and ngIf.. else

    From Anuglar v4 above, we are able to using 'as' with async pipe. This allow as using 'new variable' ...

  5. 线程TLAB区域的深入剖析

    (1) 堆是JVM中所有线程共享的,因此在其上进行对象内存的分配均需要进行加锁,这也导致了new对象的开销是比较大的 (2) Sun Hotspot JVM为了提升对象内存分配的效率,对于所创建的线程 ...

  6. mongodb查询部分满足条件的列

    db.tblorders.createIndex( { orderid : -1 },{background:true, name:"index_orderid"} ); db.o ...

  7. IQueryFielter接口

    IQueryFilter基于属性查询过滤数据.需要定义一个where子句.可以指定要返回值的字段列表.如果没有指定列,将返回所有值.当需要根据属性值和属性的关系过滤数据时,使用该接口. 成员 AddF ...

  8. [PReact] Handle Simple Routing with preact-router

    Some applications only need a very minimal routing solution. This lesson will cover a practical exam ...

  9. Pandoc —— 标记语言转换工具(中文乱码问题)

    今次毕业设计,来个逼格高的,用 latex 编写.谁曾想,学院首先要收一份 word 版的.辣么多的 latex 公式如何转呀. Pandoc 是由 John MacFarlane 开发的标记语言转换 ...

  10. ZOJ 3168 Sort ZOJ7 水

    再水一发,舍友肿么还在睡T T. ---------------------------------舍友还在睡觉的分割线--------------------------------- http:/ ...