新的Runnable()但没有新线程?
问题内容:
我试图在这里理解代码,特别是匿名类
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类的目的是什么?
谢谢
问题答案:
Runnable
通常用于提供线程应运行的代码,但Runnable
它本身与线程无关。它只是一个带有run()
方法的对象。
在Android中,Handler
该类可用于要求框架稍后在 同一 线程上而不是在另一个线程上运行某些代码。
Runnable
用于提供稍后应运行的代码。