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);
}
}
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);
}
}