我写了一个线程如下:
public class DrawGameSceneThread extends Thread{ //绘制线程,始终循环绘制
public void run() {
while(true){
try {
    onDraw(canvas);
    Thread.sleep(50);
}catch (Exception e) {
// TODO: handle exception
}
}
}
}
然后我在函数中绘制图形:
public void onDraw(Canvas canvas){
   canvas.drawBitmap(pic, 0, 0, null);
   ....
}
按理说这个线程应该是会始终重复绘制这个界面的,但是不知道为什么我的这个线程绘制一段时间以后会突然跳出,并且整个Activity都关闭了,关闭Activity时也没有报任何异常信息。因而我想要一直循环绘制界面的目的总是不能实现,请问各位有没有遇到这个问题啊?这个一般可能是哪里出问题了?望高人解疑!!!

解决方案 »

  1.   

    会不会是调用sleep当前线程进入了同步锁,sleep 方法并不会释放锁,即使当前线程使用 sleep 方法让出了 cpu,但其他被同步锁挡住了的线程也无法得到执行。
      

  2.   

    我尝试不让系统睡眠,无间隙的刷新,但还是会弹出activity啊,郁闷。
      

  3.   

    onDraw()方法应该是系统自动调用的吧?
      

  4.   

    你在线程里调用刷新方法就行了,不用调用onDraw()方法。
    postInvalidate()好像是这样写。
      

  5.   

    onDraw就是系统调用的,不应该在线程里调啊
      

  6.   

    对,用postInvalidate执行更新,由系统调用onDraw就可以了
      

  7.   

    在线程中刷新界面用Handler来处理的,下面是个例子可以看看http://www.cnmsdn.com/html/201005/1274931777ID5224.html
      

  8.   

    我试了在onDraw函数中如果将canvas.drawBitmap(pic, 0, 0, null);改成绘制文字就没有错,也会一直刷新绘制屏幕,但是用drawBitmap来绘制图片时总是会绘制一段时间后跳出,这可能是什么因素引起的?
      

  9.   

    问题有没有得到解决啊 现在我也遇到同样问题 用postvalidate 也播放一段时间就退出啊