//运用Handler.post()
public class SecondActivity extends Activity {
private String url = "http://litchiapi.jstv.com/Attachs/Top/11949/e650e0201de541d2ba91dca202b0fcfe.jpg";
private ImageView imageview;
private Handler handler = new Handler();// 注意:这里用handler.post()方法,所以不用实现里面的方法
// 这种方法是不用到Message(),只是利用handler.post(Runable)方法来更新,里面其实放的是代码,注意:存放的代码它属于主线程;
// 注意:这里用handler.post()方法,所以不用实现里面的方法
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 这个SecondActivity要用主布局记得在功能清单文件改配置
imageview = (ImageView) this.findViewById(R.id.imageview);
// 子线程,下载操作
new Thread(new Runnable() {
@Override
public void run() {
Log.i("MainActivity", "first"
+ Thread.currentThread().getName());
byte[] data = loadImage(url);
final Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0,
data.length);
handler.post(new Runnable() {
// 注意:这里是主线程,只是一个代码,因为它没有启动所以不算线程
@Override
public void run() {
Log.i("MainActivity", "second"
+ Thread.currentThread().getName());
imageview.setImageBitmap(bitmap);
}
});
}
}).start();
}
public byte[] loadImage(String url) {
try {
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(url);
HttpResponse response = client.execute(get);
if (response.getStatusLine().getStatusCode() == 200) {
return EntityUtils.toByteArray(response.getEntity());
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
//使用handler.sendEmptyMessage()通知更新
//这是第一种方法:利用handler.sendEmptyMessage()通知更新
//另外一种方法是不用到Message(),只是利用handler.post(Runable)方法来更新,里面其实放的是代码,注意:存放的代码它属于主线程;
public class MainActivity extends Activity {
private String url = "http://litchiapi.jstv.com/Attachs/Top/11949/e650e0201de541d2ba91dca202b0fcfe.jpg";
private ImageView imageview;
private ProgressDialog dialog;
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case 0:
dialog.show();
break;
case 1:
imageview.setImageBitmap((Bitmap) msg.obj);
break;
case 2:
dialog.dismiss();
break;
}
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageview = (ImageView) this.findViewById(R.id.imageview);
dialog = new ProgressDialog(this);
dialog.setTitle("提示");
dialog.setIcon(R.drawable.ic_launcher);
dialog.setMessage("正在下载数据!!!");
new Thread(new Runnable() {
@Override
public void run() {
// 1.显示对话框
handler.sendEmptyMessage(0);// 通知主线程显示对话框
// 2.下载数据
byte[] data = loadImage(url);
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0,
data.length);
Message message = Message.obtain();
message.what = 1;
message.obj = bitmap;
handler.sendMessage(message);// 发送主线程设置图片显示
// 3.关闭对话框
handler.sendEmptyMessage(2);
}
}).start();
}
public byte[] loadImage(String url) {
try {
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(url);
HttpResponse response = client.execute(get);
if (response.getStatusLine().getStatusCode() == 200) {
return EntityUtils.toByteArray(response.getEntity());
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
转载于:https://my.oschina.net/u/2541146/blog/625268