【发布时间】:2013-09-06 10:22:51
【问题描述】:
这会使当前的 UI 线程进入休眠状态吗?
try
{
Thread.sleep(20);
onProgressUpdate(i);
} catch (InterruptedException e) {
e.printStackTrace();
}
【问题讨论】:
标签: java android multithreading
这会使当前的 UI 线程进入休眠状态吗?
try
{
Thread.sleep(20);
onProgressUpdate(i);
} catch (InterruptedException e) {
e.printStackTrace();
}
【问题讨论】:
标签: java android multithreading
仅当从 UI 线程调用时。
【讨论】:
如果你在 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 下的主题
【讨论】:
Thread.sleep(time) 将导致发送此消息的线程在给定的时间间隔内休眠。所以如果你在 UI 线程中调用它,它会影响 UI 线程。就 android 而言,不建议以任何方式阻塞 UI 线程,否则会导致 ANR - 应用程序无响应。
您可以参考this
【讨论】:
嗯,语言中的任何静态方法都可以在对象引用而不是类上调用。但这并不会改变功能:Thread.sleep() 是一个静态方法,可以让当前线程进入睡眠状态。
【讨论】: