为了账号安全,请及时绑定邮箱和手机立即绑定

handler.post(runnable)的方式的思考

mHandler1.post(new Runnable() {
            
            @Override
            public void run() {

//如果这个run方法是死循环,那么,handler2post的线程就不会被执行了

                try {
                    Thread.sleep(10000);


                } catch (InterruptedException e) {
                    e.printStackTrace();
                    
                    textView.setText("handler1");
                }
            }
        });
        
        mHandler2.post(new Runnable() {
            
            @Override
            public void run() {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                textView.setText("handler2");
            }
        });

正在回答

1 回答

程序一般的确是按代码顺序来执行的。

但此处是:开启线程1,线程1中的handler将runnable发送给MessageQueue后立即返回,等待消息派发后执行run()的回调函数。在这个等待间隙它会去开启下一个线程2。

所以run()即便是死循环也不会影响下面的代码执行。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android面试常客Handler详解
  • 参与学习       54881    人
  • 解答问题       183    个

学Android开发,必学Handler,也是Android面试常客

进入课程

handler.post(runnable)的方式的思考

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信