在MainActivity中的代码

package com.example.f02_sdcard02;import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;public class MainActivity extends Activity {private Button button;private ProgressDialog dialog; //创建一个对话框private String path = "http://111.0.26.119:8080/http/hangzhou.jpg"; //图片所在的urlprivate ImageView imageView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);dialog = new ProgressDialog(MainActivity.this);dialog.setTitle("提示");dialog.setMessage("load......");button = (Button) this.findViewById(R.id.button1);imageView=(ImageView)this.findViewById(R.id.imageView1);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubnew MyTask().execute(path);//启动异步任务}});}public class MyTask extends AsyncTask<String, Void, byte[]> {private String imageName;@Overrideprotected void onPreExecute() {// TODO Auto-generated method stubsuper.onPreExecute();dialog.show();}@Overrideprotected byte[] doInBackground(String... arg0) {// TODO Auto-generated method stubbyte []data=HttpUtiles.downloadImg(arg0[0]);//获取图片名称imageName=arg0[0].substring(arg0[0].lastIndexOf("/")+1,arg0[0].length() );Log.i("TAG", "-------->"+data.length);return data;}@Overrideprotected void onPostExecute(byte[] result) {// TODO Auto-generated method stubsuper.onPostExecute(result);Bitmap bitmap=BitmapFactory.decodeByteArray(result, 0, result.length);//显示图片imageView.setImageBitmap(bitmap);FileUtiles fileUtiles=new FileUtiles();fileUtiles.fileSave(imageName, result);dialog.dismiss();}}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}

HttpUtile获取网络数据的方法

package com.example.f02_sdcard02;import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;import android.util.Log;public class HttpUtiles {public static byte[] downloadImg(String path) {byte[] data = null;HttpClient client=new DefaultHttpClient();HttpPost httpPost=new HttpPost(path);try {HttpResponse httpResponse=client.execute(httpPost);if(httpResponse.getStatusLine().getStatusCode()==200){data=EntityUtils.toByteArray(httpResponse.getEntity());Log.i("TAG", "-------->"+data.length);}} catch (ClientProtocolException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{client.getConnectionManager().shutdown();}return data;}

存储在sdcard中的代码在上一篇博客中已贴出,在这篇博客中就不在写了,Android通过AsyncTask加载网络数据在实际开发中有着很大的作用,因耗时长的网络操作放在主线程中会堵塞UI,就要采取多线程的方式解决该问题。最后一定不要忘了在 清单文件中添加  <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

Android开发之异步任务加载网络图片并存储在sdcard中(源代码分享)相关推荐

  1. android listview动态加载网络图片不显示,Android Listview异步动态加载网络图片

    Android Listview异步动态加载网络图片 详见: http://blog.sina.com.cn/s/blog_62186b460100zsvb.html 标签: Android SDK ...

  2. android实现新闻内容显示功能,Android开发实现自定义新闻加载页面功能实例

    本文实例讲述了Android开发实现自定义新闻加载页面功能.分享给大家供大家参考,具体如下: 一.概述: 1.效果演示: 2.说明:在新闻页面刚加载的时候,一般会出现五种状态 未知状态(STATE_U ...

  3. Android开发必备之Picasso加载图片

    为什么使用Picasso 传统的加载网络图片. public void saveToFile(String destUrl) {FileOutputStream fos = null;Buffered ...

  4. iOS开发学无止境 - 异步图片加载优化与常用开源库分析

    作者:罗轩(@luoyibu) 网址:http://www.jianshu.com/p/3b2c95e1404f 1. 网络图片显示大体步骤:   下载图片 图片处理(裁剪,边框等) 写入磁盘 从磁盘 ...

  5. android listview预加载动画,Android开发Activity页面预加载

    概述 某些业务场景下,为了提高用户体验,我们可能需要在前一个页面就将下一个页面的数据准备好,减少用户后续操作的时间.因为Activity在设计上采用了低耦合,高度的隔离使得传统的预加载Activity ...

  6. Android 通过开源框架实现加载网络图片并下载到SD卡通知系统相册显示,(并实现分享图片功能)

    首先看下本 demo实现的功能 1:实现网络图片的加载显示 2:点击图片底部弹出popupwindow 3:点击分享 实现单个图片分享到:微信,朋友圈,QQ,QQ控件(调用系统) 4:点击下载 实现图 ...

  7. Android开发之使用createFromStream加载图片发现图片变小

    我们在开发过程中经常要将sd卡或网络图片加载为Drawable来使用.有很多人为了方便使用Drawable.createFromStream(stream, "src"). 但是使 ...

  8. android开发-RecyclerView上拉加载

    需求 实现功能--分批上拉加载.如分批加载每次30个,第一次显示30个item,上拉到底后,数据再添入30个,一共可显示60个item. 上拉加载的控件--RecyclerView. 上拉加载的时机- ...

  9. android 图片加载 软引用_Android 异步加载网络图片并缓存到本地 软引用 学习分享(转)...

    迪 王. 于 星期四, 20/02/2014 - 21:36 提交 在android应用开发的时候,加载网络图片是一个非常重要的部分,很多图片不可能放在本地,所以就必须要从服务器或者网络读取图片. 软 ...

最新文章

  1. 查询表空间状态,创建表空间,让表空间的大小自动扩展,删除表空间
  2. [MyBatisPlus]乐观锁和悲观锁
  3. mysql typeindex_explain mysql的type字段,索引的类型
  4. Jquery特殊效果
  5. RuiJi Scraper基础 – RuiJi表达式模型
  6. Django框架 之 Form表单和Ajax上传文件
  7. 程序员需不需要数学知识?
  8. 简单Git入门本地仓库同步到远程GitHub仓库
  9. 数据分析_excel
  10. MacBook 与 AirPods 连接不稳定处理方案
  11. InfoPath2007中通过MOSS的webservice读取数据库时需注意的事项
  12. 英特尔的新硬件套装使制作机器人和无人机更加简单
  13. 微信支付开发(6)--付款码支付(被扫)开发详解
  14. oracle 存储过程中使用select 列 into 变量
  15. 【Python】安装PIL (Python Imaging Library )
  16. 新纪元期货:投资远离骗局
  17. 这四款优傲机器人中哪一个最适合你?
  18. 如何用一个鼠标控制多台电脑?
  19. mac 安装exe文件的方法 mac怎么安装exe文件
  20. 浙江大学计算机专业录取,2016年浙江大学计算机学院复试成绩及拟录取名单

热门文章

  1. 计算机英语文章阅读网站,关于电脑的英语美文阅读
  2. 3d相册 html 代码_HTML5 3D立体图片相册
  3. 无法打开文件“python310_d.lib”
  4. n1进入recovery模式_启动自动变砖模式?三星Galaxy“智能”手机
  5. python学习总目录
  6. 机器学习开发者的现代化路径:不需要从统计学微积分开始
  7. Linux常用命令之rm
  8. atitit.设计模式(1)--—职责链模式(chain of responsibility)最佳实践O7 日期转换
  9. corosync+pacemaker实现高可用(HA)集群(二)
  10. sony service tel