Handler、Message几种发送消息形式总结

部分代码如下:

 

消息处理代码:

 

  1. private Handler handler = new Handler() {
  2. public void handleMessage(Message msg) {
  3. switch (msg.what) {
  4. case 1 :
  5. bt.setText("正在下载...");
  6. break;
  7. case 2 :
  8. Bitmap bm = (Bitmap) msg.obj;
  9. iv.setImageBitmap(bm);
  10. break;
  11. case 3 :
  12. Bundle bundle = msg.getData();
  13. String data = bundle.getString("text");
  14. bt.setText(data);
  15. break;
  16. }
  17. }
  18. };
private Handler handler = new Handler() {
	public void handleMessage(Message msg) {
		switch (msg.what) {
			case 1 :
				bt.setText("正在下载...");
				break;
			case 2 :
				Bitmap bm = (Bitmap) msg.obj;
				iv.setImageBitmap(bm);
				break;
			case 3 :
				Bundle bundle = msg.getData();
				String data = bundle.getString("text");
				bt.setText(data);
				break;
		}
	}
};

 

 

 

消息发送代码:

方式一:

示例1:

Message.obtain(handler,1).sendToTarget();

示例2:

Bitmap bm = NetUtil.downloadNewImg();

Message.obtain(handler, 2, bm).sendToTarget();

示例3:

// 这条消息,不携带数据,而是携带一段代码, 主线程处理这条消息时,会执行它携带的代码,而不执行其他代码

Message.obtain(handler, new Runnable() {
public void run() {
bt.setText("下载内涵图");
}
}).sendToTarget();

 

方式二:

示例1:

handler.obtainMessage(1).sendToTarget();

示例2:

Bitmap bm = NetUtil.downloadNewImg();

handler.obtainMessage(2, bm).sendToTarget();

 

方式三:

示例1:

Message msg = new Message();
msg.what =1;
handler.sendMessage(msg);

示例2:

Message msg = new Message();
msg.what =2;
msg.obj = bm;
handler.sendMessage(msg);

示例3:

Message msg = new Message();
Bundle data = new Bundle();
data.putString("text", "正在下载...");
msg.what = 3;
msg.setData(data);
handler.sendMessage(msg);

示例4:

 

    1. // 创建一个携带代码的消息对象,并发送给主线程执行
    2. handler.post(new Runnable() {
    3. public void run() {
    4. // 在主线程中,处理消息时执行
    5. Toast.makeText(
    6. MainActivity.this,
    7. "下载结束",
    8. Toast.LENGTH_SHORT).show();
    9. }
    10. });  

转载于:https://www.cnblogs.com/johnforu/p/4967178.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值