如何让应用程序主线程进入睡眠状态?

时间:2011-05-23 01:51:35

标签: java android multithreading

我有一个当前的问题:我有一个应用程序,并希望让主线程休眠1500毫秒显示我可以显示ProgressDialog,我不知道该怎么做。可以停止应用程序主线程吗?我可以使用另一个线程实现相同的目标吗?

6 个答案:

答案 0 :(得分:5)

停止主线程通常是一个坏主意,因为它也会停止所有UI交互处理。

尝试进行模式的进度对话框。这将阻止用户在对话框消失之前在UI上执行任何操作。我认为这将实现您想要做的并且与Android的工作方式兼容

答案 1 :(得分:3)

这不是一个好主意,但如果你必须使用这个

try {
    Thread.sleep(1500);
} catch (InterruptedException e) {
    //handle
}

答案 2 :(得分:1)

不要停止主UI线程!它将冻结UI。我可以想象你在一些后台操作中显示进度对话框。完成此操作后,只需发布​​一些内容即可通过处理程序更新UI。

进度点对话框是在执行某些操作时与用户进行交互。否则你甚至不需要后台操作和进度对话框。您只需在主UI线程中操作并等待UI解冻。

答案 3 :(得分:1)

你所要求的应该是不必要的,正如卡斯滕所说,这是一个坏主意。这是一个基本规则,您既不会中断UI线程,也只会更新该线程上的UI元素。虽然显示了一个Dialog及其任何子类,但后台的任何内容都不会收到任何输入,所以虽然它正在运行...虽然主线程正在运行,但除了Dialog中发生的事情之外,什么都不应该发生。

你可能要做的是使用类似AsyncTask()的东西来显示你的ProgressDialog,做一些工作,然后在完成这项工作后解雇它。

答案 4 :(得分:0)

要做这样的事情,你会想要使用“Runnables”和“Handler”。正如其他人提到的,您不希望停止主UI线程。由于只有一个,如果您让它睡眠或等待,您将不会显示任何更新。请参阅下面的另一个线程上运行代码的小示例。

要解决的主要问题是睡眠主线程意味着停止任何和所有视觉更新。

pre

答案 5 :(得分:0)

在Kotlin的线程上睡眠10秒钟

try {
    Thread.sleep(10000)
} catch (e: InterruptedException) {
    //handle
}