msg.obj和msg.what

本文介绍了Android开发中Handler与Message的基本使用方法,对比了两种创建Message的方式:new Message()与handler.obtainMessage(),并解释了它们之间的性能差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

msg.ob使用来放对象的,这个对象可以使任何类型msg.what只能放数字(作用可以使用来做if判断)用过Handler的人都知道,Message有两种获取方法Message msg = new Message();或者Message msg = handler.obtainMessage();这两种方法的区别是,前者是new的,需要开辟内存空间;后取者是从global Message pool中,性能消耗相对少;
private final Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case GET_CARD_INFO: cancelProg(); String cardInfo = (String)msg.obj; tv_cardInfo.setText(cardInfo); displayData("CardInfo", cardInfo); Log.e(TAG,"the CardInfo is ===========" + cardInfo); break; case WRITE_CARD_INFO: cancelProg(); String writeCardInfo = (String)msg.obj; Toast.makeText(MainActivity.this, writeCardInfo, Toast.LENGTH_LONG).show(); tv_sendData.setText(writeCardInfo); displayData("writeCardInfo", writeCardInfo); Log.e(TAG,"the writeCardInfo is ===========" + writeCardInfo); break; case GET_CARD_SN: cancelProg(); String sn = (String) msg.obj; tv_seriesNumber.setText(sn); Log.e(TAG,"the cardsn is ===========" + sn); break; case GET_CARD_SN_ERR: case GET_CARD_IMSI_ERR: String info = (String) msg.obj; Toast.makeText(getApplicationContext(), info, Toast.LENGTH_LONG).show(); break; case GET_CARD_ICCID: cancelProg(); String iccid = (String) msg.obj; tv_ICCID.setText(iccid); Log.e(TAG,"the iccid is ===========" + iccid); break; case GET_CARD_IMSI: cancelProg(); String IMSI = (String) msg.obj; tv_cardInfo.setText(IMSI); Log.e(TAG,"the imsi is ===========" + IMSI); break; case GET_CARD_SMSP: cancelProg(); String rSMSP = (String) msg.obj; tv_SMSP.setText(rSMSP); Log.e(TAG,"the SMSP is ===========" + rSMSP); break; case WRITE_CARD_RESULT: cancelProg(); String writeResult = (String) msg.obj; //tv_sendData.setText(""); tv_sendData.setText(writeResult); Log.e(TAG,"the writeResult is ===========" + writeResult); break; case DEVICE_REGISTER_RESULT: String deviceRegisterResult = (String)msg.obj; mEditReceive.setText(deviceRegisterResult); Log.d(TAG,"设备注册成功:" + deviceRegisterResult); break; case DEVICE_REGISTER_ERR: String deviceRegisterErr = (String)msg.obj; mEditReceive.setText(deviceRegisterErr); Log.d(TAG,"设备注册失败:" + deviceRegisterErr); break; default: break; } } }; This Handler class should be static or leaks might occur (anonymous android. os. Handler)
04-02
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值