Android中AsyncTask异步交互的简单demo

package com.bawei.asynctask;


import java.io.IOException;
import java.io.InputStream;


import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;


import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.Menu;
import android.view.View;
import android.widget.ImageView;
import android.widget.ProgressBar;


public class MainActivity extends Activity {


private ImageView iv;
private ProgressBar pb;
String path="http://169.254.226.103:8080/aa.jpg";


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取控件
iv = (ImageView) findViewById(R.id.iv);
pb = (ProgressBar) findViewById(R.id.pb);
}
//按钮监听事件
public void click(View view){
//创建异步交互对象
/**
* 第一个参数是传递线程的参数   url 
* 第二个参数是后台线程的进度  Integer
* 第三个参数是线程执行完之后返回的参数

* 参数按情况自拟
*/
new AsyncTask<String,String, Bitmap>() {


/*
*此方法相当于子线程   耗时工作在此方法中操作
* */
@Override
protected Bitmap doInBackground(String... arg0) {
HttpClient client=new DefaultHttpClient();
HttpGet get=new HttpGet(path);
try {
HttpResponse response = client.execute(get);
int code=response.getStatusLine().getStatusCode();
if(code==200){
InputStream is = response.getEntity().getContent();
BitmapFactory bf=new BitmapFactory();
Bitmap bm = bf.decodeStream(is);
return bm;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}


/**子线程(doInBackground)运行完毕返回的值   为此方法的参数
* 子线程(doInBackground)运行完    运行次方法    此方法在UI主线程

* 在主线程,做新界面的操作
*/
@Override
protected void onPostExecute(Bitmap bm) {
super.onPostExecute(bm);
iv.setImageBitmap(bm);
pb.setVisibility(View.INVISIBLE);
}
/**
* 在主线程,一般做一些准备的工作
* 在子线程(doInBackground)之前运行此方法
*/


@Override
protected void onPreExecute() {
super.onPreExecute();
pb.setVisibility(View.VISIBLE);
}




}.execute(path);
}




}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晓 5

有啥不懂的可以单聊解答....

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值