新的Runnable()但没有新的线程?

2022-09-02 11:05:04

我试图理解这里的代码,特别是匿名类

private Runnable mUpdateTimeTask = new Runnable() {
public void run() {
   final long start = mStartTime;
   long millis = SystemClock.uptimeMillis() - start;
   int seconds = (int) (millis / 1000);
   int minutes = seconds / 60;
   seconds     = seconds % 60;

   if (seconds < 10) {
       mTimeLabel.setText("" + minutes + ":0" + seconds);
   } else {
       mTimeLabel.setText("" + minutes + ":" + seconds);            
   }

   mHandler.postAtTime(this,
           start + (((minutes * 60) + seconds + 1) * 1000));
   }
};

文章说

处理程序将更新代码作为主线程的一部分运行,从而避免了第二个线程的开销。

创建新的 Runnable 类难道不应该创建一个新的第二个线程吗?除了能够将 Runnable 类传递给 PostAtTime 之外,这里 Runnable 类的目的是什么?

谢谢


答案 1

Runnable通常用于提供线程应运行的代码,但其本身与线程无关。它只是一个带有方法的对象。Runnablerun()

在 Android 中,该类可用于要求框架稍后在同一线程上运行一些代码,而不是在另一个线程上运行。 用于提供应稍后运行的代码。HandlerRunnable


答案 2

如果要创建一个新的...你可以做这样的事情...Thread

Thread t = new Thread(new Runnable() { public void run() { 
  // your code goes here... 
}});

推荐