人。我的Android应用程序中存在线程问题。 initializeGame()是主要方法:
public void initializeGame()
{
Thread thread = new Thread(new onePoint());
thread.start();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
class,我在描述这个帖子:
class onePoint implements Runnable {
(...)
public void run() {
(...)
setBackgroundColorOnButton(...);
while (...) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
(...)
if (...) {
setOpacityOnButton(...);
}
}
}
在“(...)”的地方,只有变量的工作。 你看,有两种方法:setBackgroundColorOnButton()和setOpacityOnButton()。
我会告诉他们:
void setBackgroundColorOnButton(int id, int num) {
int color = Color.parseColor("#cccaca");
switch (num) {
case 1: color = Color.RED; break;
case 2: color = Color.parseColor("#FF4F38"); break;
case 3: color = Color.YELLOW; break;
case 4: color = Color.GREEN; break;
case 5: color = Color.BLUE; break;
case 6: color = Color.parseColor("#09256C"); break;
case 7: color = Color.parseColor("#690069"); break;
}
final int col = color;
Message message = backgroundColorOnButton.obtainMessage();
message.obj = new int[] {id, col};
backgroundColorOnButton.sendMessage(message);
}
void setOpacityOnButton(int id, final int opacity) {
Message message = opacityOnButton.obtainMessage();
message.obj = new int[] {id, opacity};
opacityOnButton.sendMessage(message);
}
在这种方法中,我正在向2个处理程序发送消息,这些处理程序在onCreate()中有描述:
backgroundColorOnButton = new Handler() {
public void handleMessage(Message msg) {
int[] a = (int[]) msg.obj;
Button btn = (Button) findViewById(a[0]);
GradientDrawable drawable = (GradientDrawable) btn.getBackground();
drawable.setColor(a[1]);
}
};
opacityOnButton = new Handler() {
public void handleMessage(Message msg) {
int[] a = (int[]) msg.obj;
Button btn = (Button) findViewById(a[0]);
if (a[1] != 0) {
btn.setText(Integer.toString(a[1]));
}
else {
btn.setText("");
}
}
};
在onCreate()方法中,我也创建了ui元素。
我的问题:在方法onCreate()中我调用了initializeGame(),我需要在应用程序启动后看到ui更改,但我没有看到它5秒钟。这是一个白色的屏幕,在5秒钟,然后ui开始改变。我做错了什么?