Handler.post()方法を用いてデータ更新とMessageで比較する(18)

3624 ワード

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