4

这会使当前的 UI 线程进入休眠状态吗?

try 
{
   Thread.sleep(20);
   onProgressUpdate(i);
} catch (InterruptedException e) {
      e.printStackTrace();
}
4

4 回答 4

3

仅当从 UI 线程调用时。

于 2013-09-06T10:24:33.917 回答
1

如果你在 ui 线程上调用 sleep 它会阻塞 ui 线程。不要在 ui 线程上调用 sleep。你不应该阻塞 ui 线程。

http://developer.android.com/reference/java/lang/Thread.html

http://docs.oracle.com/javase/tutorial/essential/concurrency/sleep.html

您将获得 ANR

如果您实现Threador HandlerThread,请确保您的 UI 线程在等待工作线程完成时不会阻塞 - 不要调用Thread.wait()or Thread.sleep()

http://developer.android.com/training/articles/perf-anr.html

另请查看如何避免 ANR 下的主题

于 2013-09-06T10:28:08.727 回答
1

Thread.sleep(time)将导致发送此消息的线程在给定的时间间隔内休眠。所以如果你在 UI 线程中调用它,它会影响 UI 线程。就 android 而言,不建议以任何方式阻塞 UI 线程,否则会导致 ANR - 应用程序无响应。

你可以参考这个

于 2013-09-06T10:32:19.063 回答
0

好吧,语言中的任何静态方法都可以在对象引用而不是类上调用。但这不会改变功能: Thread.sleep() 是一个静态方法,可以让当前线程进入睡眠状态。

于 2013-09-06T10:27:49.650 回答