canvas的Android活动不断崩溃

时间:2015-11-08 09:12:44

标签: android multithreading canvas

一旦我开始活动,手机就会挂起然后崩溃。 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();       
}

我觉得处理太多了。我是否需要在不同的主题中进行。

1 个答案:

答案 0 :(得分:1)

它崩溃的明显问题:
您在invalidate()方法中呼叫onDraw()。当您致电invalidate()时,会调用onDraw()方法。因此,当您在invalidate()方法中调用onDraw()时,您最终创建了一个永不停止的INFINITE循环。

那么如何完成你想要做的事情呢?是的,你需要在一个单独的线程中运行它。使用Handlers并在该增量中使用dy值,然后在那里调用invalidate()。这样的事情:https://stackoverflow.com/a/7787796/4747587