【发布时间】:2013-08-14 01:37:38
【问题描述】:
我已经尝试过 AsyncTask、Handler 和一个简单的线程来实现我想要做的事情,但我无法让它们中的任何一个工作,下面是我需要用来更新我的 UI 的逻辑......
public class GameProcessor extends Thread {
@Override
public void run() {
for (Integer integer : sequence) {
//set button state to pressed
Console.getBottomLeft().getButton().setBackgroundResource(R.drawable.button_focused);
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//set button state to un-pressed
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
请不要回复,除了主线程之外,您无法从任何地方更新 UI,我已经知道这一点,并且需要一个解决方案来解决如何在更新 UI 的同时从后端循环一些值。据我所知, AsyncTask 和 Handler 不会有太大帮助。
任何帮助将不胜感激!
【问题讨论】:
-
运行这个会发生什么?崩溃,或者用户界面根本不更新?你说的按钮状态是 Android Button 类实例吗?
-
@TenFour04 我更新了代码 sn-p。 Console.getxxx 行将返回一个 android.widget.Button 实例并尝试更新它的后台资源。此代码抛出 CalledFromWrongThreadException。
-
您能告诉我们为什么在后台线程中循环某些值时绝对需要更新 UI,以及为什么不能在 UI 线程上执行此操作吗?我问是因为如果您向我们提供更多信息,我们可以以更好的方式为您提供帮助。
标签: android multithreading loops android-asynctask handler