Handler.postDelayed v / s Runnable.run。是否可以调用.run而不是.postDelayed?

时间:2015-04-18 12:20:30

标签: java android multithreading runnable android-handler

我试图实现循环Runnable。我发现的例子似乎使用以下想法来启动runnable。

        handler = new Handler();
        final Runnable r = new Runnable() {
            public void run() {
                handler.postDelayed(this, 10000);
                doIt();
                count ++;
            }
        };
        r.run();// what I prefer
//      handler.postDelayed(r, 1000);//their idea

我更喜欢使用run()方法调用来启动Runnable。如果直接打电话给run(),我可能会遇到什么麻烦!

谢谢! :)

2 个答案:

答案 0 :(得分:3)

如果您致电r.run()Runnable将立即执行。但是,如果您按照建议调用handler.postDelayed(r, 1000);,则{1}}将在1秒过后才会执行。所以,这是第一点。其次,为什么不使用Runnable提供的Thread Loop merchanismAndroid Handler AsyncTaskHandlerThread支持它很好吗?

答案 1 :(得分:1)

  

我更喜欢使用run()方法调用来启动Runnable。

行。

  

如果直接调用run(),我可以遇到什么麻烦!

第一次通过run()会立即发生,而不是您的注释掉的代码,这会导致第一次通过run()从现在开始大约1000毫秒。

但是,我会转储HandlerpostDelayed()也是View上的一种方法,因此只需在用户界面中使用一些小部件即可。