【奇葩】SurfaceView作图画布home后返回黑屏

【奇葩】SurfaceView绘制画布home后返回黑屏问题遇到很奇葩,我也不知道什么原因,自己用SurfaceView实现了绘

【奇葩】SurfaceView绘制画布home后返回黑屏
问题遇到很奇葩,我也不知道什么原因,自己用SurfaceView实现了绘制画布,在线程里面通过lockcanvas获取canvas绘制图形,然后绘制完成后点击home按钮,然后再点击程序图标切回程序后会黑屏大概一段时间(有时候秒进,有时候延时很长),代码奉上

t = new Thread(){
public void run() {
Rect rect = new Rect();
rect.left = 20;
rect.top = 20;
rect.bottom = 100;
rect.right = 300;
loadImage();
SurfaceHolder holder = canvas.getHolder();
while(true){
long start = System.currentTimeMillis();
Canvas g = holder.lockCanvas();
if(g != null){
paintImage(g);
//
holder.unlockCanvasAndPost(g);
}else{
//Thread.yield();//把这句注释去掉就可以解决返回黑屏
}
long end = System.currentTimeMillis() - start;
if(end < 33){
try {
Thread.sleep(33-end);
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
};
};
t.start();


其中我在当canvas为空的时候thread.yield一下就可以解决home返回后黑屏,求教是什么原因,我同事用同样的代码,没有yield却没有问题
eclipse版本4.2 ADT版本21.1.0 图形 canvas SurfaceView 游戏 绘制
[解决办法]
Thread.yield();不可用,把线程进入可执行状态后什么时候开始执行看机器运行的线程了