首页 > android中handler延迟问题

android中handler延迟问题

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

            int a = 1;
            while(true)
            {
                Message m = new Message();
                m.obj = ""+a;
                m.what = 0x123;
                handler.sendMessageDelayed(m, 1000);
                a++;
            }
            int a = 1;
            while(true)
            {
                Message m = new Message();
                m.obj = ""+a;
                m.what = 0x123;
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                handler.sendMessage(m);
                a++;
            }

因为

handler.sendMessageDelayed(m, 1000);

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

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


handler.sendMessageDelayed(m, 1000)搭配TimeSchedule可以实现你想要的效果

【热门文章】
【热门文章】