android中handler延迟问题

如下面两端代码都是在新线程中的run方法中,为什么会有不同的结果,我想实现的是将数字按秒递增的效果,第一种方式为什么不是我想要的结果,senMessageDelayed这个方法不是延迟发送么,理论上应该是和第二段代码等效吧,求大神解释这个函数的机制。

 int a = 1; whiletrue { Message m = new Message; m.obj = ""+a; m.what = 0x123; handler.sendMessageDelayedm, 1000; a++; }
 int a = 1; whiletrue { Message m = new Message; m.obj = ""+a; m.what = 0x123; try { Thread.sleep1000; } catch InterruptedException e { // TODO Auto-generated catch block e.printStackTrace; } handler.sendMessagem; a++; }

因为

handler.sendMessageDelayedm, 1000;

这段代码是异步的,程序会1秒后把这个message传递给handler,但是程序不会在这里阻塞,while循环仍在继续执行.

所以1秒后,handler连续收到了n个message.

handler.sendMessageDelayedm, 1000搭配TimeSchedule可以实现你想要的效果

发表评论

电子邮件地址不会被公开。 必填项已用*标注