一旦我开始活动,手机就会挂起然后崩溃。 Logcat没有显示它崩溃的原因。
我有一个画布,其中圆圈一个接一个地从屏幕顶部出现,并以恒定速率向下移动。这是我的onDraw代码:
protected void onDraw(Canvas canvas)
{
int dy = 1;
paint.setColor(Color.WHITE);
paint.setStyle(Paint.Style.STROKE);
for (int i=0, j=0; i<= dy/55; i=i++, j=j+55){
canvas.drawCircle(canvas.getWidth()/2, dy+j, 25, paint); // there is a horizontal distance of 5 between 2 circles
}
dy +=2;
invalidate();
}
我觉得处理太多了。我是否需要在不同的主题中进行。
答案 0 :(得分:1)
它崩溃的明显问题:
您在invalidate()
方法中呼叫onDraw()
。当您致电invalidate()
时,会调用onDraw()
方法。因此,当您在invalidate()
方法中调用onDraw()
时,您最终创建了一个永不停止的INFINITE循环。
那么如何完成你想要做的事情呢?是的,你需要在一个单独的线程中运行它。使用Handlers
并在该增量中使用dy
值,然后在那里调用invalidate()
。这样的事情:https://stackoverflow.com/a/7787796/4747587