//运用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; } }