实例介绍
【实例简介】
【实例截图】

【核心代码】
package com.android_asynctask;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import android.app.Activity;
import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends Activity {
private Button button,button2,button3;
private ImageView imageView;
private String image_path="http://h.hiphotos.baidu.com/image/pic/item/902397dda144ad3406f4be11d2a20cf430ad85d8.jpg";
private ProgressDialog dialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button=(Button)findViewById(R.id.button1);
imageView=(ImageView)findViewById(R.id.imageView1);
dialog=new ProgressDialog(this);
dialog.setTitle("提示信息");
dialog.setMessage("正在下载,请稍后...");
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
//dialog.setCancelable(false); //直到下载完后才能消失
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//执行异步任务的操作
new MyTask().execute(image_path);
//不能在UI主线程中直接访问网络
/*new Thread(new Runnable() {
@Override
public void run() {
HttpClient httpClient=new DefaultHttpClient();
HttpGet httpGet=new HttpGet(image_path);
try {
httpClient.execute(httpGet);
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();*/
}
});
button2=(Button)findViewById(R.id.button2);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new MyTask1().execute(image_path);
}
});
button3=(Button)findViewById(R.id.button3);
button3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
UpdateManger updateManger=new UpdateManger(MainActivity.this);
updateManger.checkUpdateInfo();
}
});
}
public class MyTask1 extends AsyncTask<String , Integer, Bitmap>{
@Override
protected void onPreExecute() {
super.onPreExecute();
dialog.show();
}
@Override
protected Bitmap doInBackground(String... params) {
Bitmap bitmap=null;
ByteArrayOutputStream outputStream=new ByteArrayOutputStream();
InputStream is=null;
try {
HttpClient client=new DefaultHttpClient();
HttpGet get=new HttpGet(params[0]);
HttpResponse response=client.execute(get);
if(response.getStatusLine().getStatusCode()==200){
is=response.getEntity().getContent();
//先要获得文件的总长度
long file_length=response.getEntity().getContentLength();
int len=0;
byte[] data=new byte[1024];
int total_length=0;
while((len=is.read(data))!=-1){
total_length =len;
int value=(int)((total_length/(float)file_length) * 100);
publishProgress(value);
outputStream.write(data, 0, len);
}
byte[] result=outputStream.toByteArray();
bitmap=BitmapFactory.decodeByteArray(result, 0, result.length);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
if(is!=null){
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return bitmap;
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
dialog.setProgress(values[0]);
}
@Override
protected void onPostExecute(Bitmap result) {
super.onPostExecute(result);
imageView.setImageBitmap(result);
dialog.dismiss();
}
}
/**
* 使用异步任务的规则
* 第一个参数表示要执行的任务 通常是网络的路径
* 第二个参数表示进度的刻度
* 第三个参数表示任务返回的结果
*/
public class MyTask extends AsyncTask<String , Void, Bitmap>{
/**
* 任务执行之前的操作
*/
@Override
protected void onPreExecute() {
super.onPreExecute();
dialog.show();
}
/**
* 主要是完成耗时操作
* @param params
* @return
*/
@Override
protected Bitmap doInBackground(String... params) {
//使用网络链接类HttpClient对网络数据的提取
HttpClient httpClient=new DefaultHttpClient();
HttpGet httpGet=new HttpGet(params[0]);
Bitmap bitmap=null;
try {
HttpResponse httpResponse=httpClient.execute(httpGet);
if(httpResponse.getStatusLine().getStatusCode()==200){
HttpEntity entity=httpResponse.getEntity();
byte[] data=EntityUtils.toByteArray(entity);
bitmap=BitmapFactory.decodeByteArray(data, 0, data.length);
}
} catch (Exception e) {
e.printStackTrace();
}
return bitmap;
}
/**
* 主要是更新UI操作
* @param result
*/
@Override
protected void onPostExecute(Bitmap result) {
super.onPostExecute(result);
imageView.setImageBitmap(result);
dialog.dismiss();
}
}
}
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论