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