【发布时间】:2013-09-11 14:53:58
【问题描述】:
我对 Java 中的 Thread 有疑问。我想在单击按钮(bt1)时将背景设置为图片,然后等待5秒并将同一按钮的背景设置为图片。问题是第一张图片从未设置过。程序只需等待 5 秒并设置图片 2。这是代码。
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bt1.setBackgroundResource(R.drawable.picture);
try
{
Thread.sleep(5000);
}
catch( InterruptedException e )
{
e.printStackTrace();
}
bt1.setBackgroundResource(R.drawable.pic);
}
});
}
【问题讨论】:
-
在我见过的几乎所有 UI 框架中,休眠在 UI 线程中都是一个坏主意。我怀疑你想要一个计时器。
-
听起来你正在暂停前台 UI 线程。你必须派生一个后台线程来改变它。
-
因为你设置了图片,然后休眠了UI线程,所以不能更新。唤醒它后,它会立即对其进行更改和更新。正如其他人所说,计时器,异步任务,可运行,除了睡眠之外的任何东西。 (无论如何,99% 的时间都在睡觉,这不是 1% 的人之一:)
-
睡在几乎在任何地方通常是个坏主意。例如,设置一个计时器比将一个线程的资源占用 5 秒更好,即使它只是一个后台线程。
标签: java android multithreading sleep