Thread.sleep()会让UI线程休眠吗?

4

这会让当前的UI线程休眠吗?

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

请查看此处的内容:http://stackoverflow.com/questions/11002657/thread-sleep-android-ui - An-droid
4个回答

3

只有当从UI线程调用时才会执行。


3
补充一点,您绝不能让UI线程休眠。否则您的应用程序会变得无响应,并询问用户是否想要终止。 - IAmGroot

2
如果您在 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
如果你使用Thread或HandlerThread,请确保你的UI线程不会在等待工作线程完成时被阻塞 - 不要调用Thread.wait()或Thread.sleep()。

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

也要查看“如何避免ANR”主题下的内容。

1

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

您可以参考this


0
任何语言中的静态方法都可以在对象引用上调用,而不是类上。但这并不改变功能:Thread.sleep() 是一个将当前线程置于休眠状态的静态方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接