我不明白为什么我的主UI线程被阻止了。我有调用函数doSomething()的按钮。
randomButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
doSomething();
}
});
}
// My private helper funtion
private void doSomething() {
Thread t1 = new Thread() {
@Override
public void run() {
long startTime = SystemClock.uptimeMillis();
Log.e(TAG, "Start Time = "+startTime);
while((SystemClock.uptimeMillis()-startTime)<6000){// Loop for 6 seconds
Log.e(TAG, "Diff ="+(SystemClock.uptimeMillis()-startTime));
}
}
};
t1.run();
}
问题是当我按下按钮时,它仍然按下我的循环运行的时间(这里是6秒)。我希望它以这样一种方式,即使循环继续运行,用户仍然可以使用他的UI元素。这就是我创建一个新线程的原因。我做错了吗?
由于
答案 0 :(得分:5)
你没有调用run来启动一个线程。你调用start()。调用run run直接调用当前线程运行