在Android App中执行以下代码时,setText发生在从另一个Service调用mainActivity.notify()之后。因此,似乎mainActivity.wait()在setText之前执行,导致setText等待。
这可能是什么原因以及如何在mainActivity.wait()之前执行Toast,以便在MainActivity等待时显示setText。
public static Activity mainActivity;
....
startButton.setText("Processing...");
synchronized(MainActivity.mainActivity) {
try {
mainActivity.wait();
} catch (InterruptedException e) {
}
}
startButton.setText("Start");
答案 0 :(得分:3)
首先,永远不要对Activity进行静态引用。这几乎可以确保内存泄漏。如果您认为自己需要,那么整个应用程序的体系结构几乎肯定是错误的,或者您不了解如何使用上下文。
其次,在引擎盖下,Android与任何其他GUI OS一样,由事件循环驱动。通过保持主线程,可以防止事件循环执行从而冻结整个应用程序。特别是在不运行事件循环的情况下,应用程序永远不会重绘。
第三,你不能等到Toast出现。系统本身会显示Toasts,例如,当它决定时,屏幕上可能还有其他的Toast。没有机制可以通知何时显示吐司。敬酒的目的是火与忘,如果你需要更强大的东西,你需要自己写。
答案 1 :(得分:-4)
您可以使用Thread.sleep方法
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}