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