如何将 Runnable 对象传递给处理程序?

Rya*_*yan 5 multithreading android handlers runnable

我正在通过一本书学习,它给了我这个例子:

Handler handler=new Handler() { 
    @Override 
    public void handleMessage(Message msg) { 
        bar.incrementProgressBy(5); 
    } 
}; 
Run Code Online (Sandbox Code Playgroud)

Thread background=new Thread(new Runnable() { 
    public void run() { 
        try { 
            for (int i=0;i<20 && isRunning.get();i++) { 
                Thread.sleep(500); 
                handler.sendMessage(handler.obtainMessage()); 
            } 
        } catch (Throwable t) { 
            // just end the background thread 
        } 
    } 
}); 
Run Code Online (Sandbox Code Playgroud)

效果很好。但是,在书中进一步说:

如果您不想对 Message 对象大惊小怪,您也可以将 Runnable 对象传递给 Handler,后者将在活动 UI 线程上运行这些 Runnable 对象。...您可以在任何视图(即,任何小部件或容器)上使用这些相同的方法。这稍微简化了您的代码,因为您可以跳过 Handler 对象。

但是没有给出如何通过Runnable对象执行此操作的示例。有人有例子吗?

Ale*_*man 5

像这样的东西:

Handler h = new Handler();
Run Code Online (Sandbox Code Playgroud)
Thread background=new Thread(new Runnable() { 
          public void run() { 
            try { 
              for (int i=0;i<20 && isRunning.get();i++) { 
                Thread.sleep(500); 
                handler.post(new Runnable() {
                  public void run() {
                    bar.incrementProgressBy(5);
                  }
                });
              } 
            } 
            catch (Throwable t) { 
              // just end the background thread 
            } 
          } 
        }); 
Run Code Online (Sandbox Code Playgroud)