关于Handler API hasMessages()的用法

来源:互联网 发布:翼支付能在淘宝上用吗 编辑:程序博客网 时间:2024/06/16 12:01

有时候在项目中希望用Handler发送一个消息后,等消息处理完再发送相同消息就需要用的hasMessages()的方法

例如:

public class MainActivity extends Activity {private int MSG_ID = 100;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);MSG_ID = 100;init();}private Handler mHandler = new Handler(){public void handleMessage(android.os.Message msg) {//1.处理主线程逻辑//2.删除消息队列中的mHandler.removeMessages(msg.what);Log.i("dg", "msg >>> "+ msg.what +" >>> 接收到消息,处理完逻辑后,删除消息");};};private void init() {new Thread(){@Overridepublic void run() {super.run();for (int i = 0; i < 10; i++) {Message msg = mHandler.obtainMessage();msg.what = MSG_ID;Log.i("dg", "msg.what >>> "+msg.what +" >>> "+mHandler.hasMessages(msg.what));if(!mHandler.hasMessages(msg.what)){mHandler.sendEmptyMessageDelayed(msg.what, 100);Log.i("dg", "发送一次消息");}try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}}}}.start();}}



log信息如下:


10-12 17:32:18.937: I/dg(23005): msg.what >>> 100 >>> false
10-12 17:32:18.937: I/dg(23005): 发送一次消息
10-12 17:32:19.037: I/dg(23005): msg.what >>> 100 >>> true
10-12 17:32:19.037: I/dg(23005): msg >>> 100 >>> 接收到消息,处理完逻辑后,删除消息
10-12 17:32:19.137: I/dg(23005): msg.what >>> 100 >>> false
10-12 17:32:19.137: I/dg(23005): 发送一次消息
10-12 17:32:19.237: I/dg(23005): msg.what >>> 100 >>> true
10-12 17:32:19.237: I/dg(23005): msg >>> 100 >>> 接收到消息,处理完逻辑后,删除消息
10-12 17:32:19.337: I/dg(23005): msg.what >>> 100 >>> false
10-12 17:32:19.337: I/dg(23005): 发送一次消息
10-12 17:32:19.437: I/dg(23005): msg >>> 100 >>> 接收到消息,处理完逻辑后,删除消息
10-12 17:32:19.437: I/dg(23005): msg.what >>> 100 >>> false
10-12 17:32:19.437: I/dg(23005): 发送一次消息
10-12 17:32:19.537: I/dg(23005): msg >>> 100 >>> 接收到消息,处理完逻辑后,删除消息
10-12 17:32:19.537: I/dg(23005): msg.what >>> 100 >>> false
10-12 17:32:19.537: I/dg(23005): 发送一次消息
10-12 17:32:19.637: I/dg(23005): msg >>> 100 >>> 接收到消息,处理完逻辑后,删除消息
10-12 17:32:19.637: I/dg(23005): msg.what >>> 100 >>> false
10-12 17:32:19.647: I/dg(23005): 发送一次消息
10-12 17:32:19.747: I/dg(23005): msg >>> 100 >>> 接收到消息,处理完逻辑后,删除消息
10-12 17:32:19.747: I/dg(23005): msg.what >>> 100 >>> false
10-12 17:32:19.747: I/dg(23005): 发送一次消息
10-12 17:32:19.847: I/dg(23005): msg >>> 100 >>> 接收到消息,处理完逻辑后,删除消息
10-12 17:32:19.847: I/dg(23005): msg.what >>> 100 >>> false
10-12 17:32:19.847: I/dg(23005): 发送一次消息
10-12 17:32:19.947: I/dg(23005): msg >>> 100 >>> 接收到消息,处理完逻辑后,删除消息


1 0
原创粉丝点击