【发布时间】:2014-01-31 12:15:37
【问题描述】:
我想在两次抽签之间暂停一下。我已经尝试过Thread.sleep、处理程序、asyncTask 并得到了相同的结果 - 当活动启动时,我必须等待我设置的时间才能看到第一次抽奖,只有当我再次调用相同的方法(测试)时,我才看到第二次抽奖,而不是再次看到第一次抽奖。这是我的代码:
public void test(){
button.setClickable(false);
button.setBackgroundColor(Color.DKGRAY);
view.setFromAtoB(true);
view.invalidate();
AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
}
return null;
}
@Override
protected void onPostExecute(Void result) {
view.setMoveAB(true);
view.postInvalidate();
button.setBackgroundColor(Color.GRAY);
button.setClickable(true);
}
};
task.execute((Void[])null);
问题出在哪里?为什么我看不到某种和谐,第一次画,暂停,第二次画? :) 也许我已经阻止了 UI 线程。对于绘图,我使用画布。在onDraw 方法中我做了一些计算并调用drawRodsAndDiscs 方法:
private void drawRodsAndDiscs(Canvas canvas){
Paint paint = new Paint();
drawRods(canvas);
paint.setColor(Color.GREEN);
paint.setStyle(Paint.Style.STROKE);
for (Rect disc : discs) {
canvas.drawRect(disc, paint);
}
}
【问题讨论】:
标签: android multithreading drawing android-canvas draw