[英]Surfaceview android
我是Android新手。 我正在嘗試使用表面視圖開發游戲應用程序。 該應用程序正常運行,但是最后我退出時,它在onDraw()方法上顯示了空指針異常,導致該應用程序崩潰。 請幫幫我,謝謝。 這是我的代碼:
public class Gameloopthread extends Thread {
private Gameview view;
static final long fps=30;
boolean running;
public Gameloopthread(Gameview view)
{
this.view=view;
}
// we have to tell thread to shut down & wait for it to finish, or else
// it might touch the Surface after we return and explode
public void setRunning(Boolean run)
{
running=true;
}
@Override
public void run() {
long tickps=3000/fps;
long startTime=0;
long sleepTime;
while(running)
{
Canvas c=null;
try{
c=view.getHolder().lockCanvas();
//Log.d("Canvas==>",""+c);
synchronized(view.getHolder()){
view.onDraw(c);
}
}finally{
if(c!=null){
view.getHolder().unlockCanvasAndPost(c);
}
}
sleepTime=tickps-(System.currentTimeMillis()-startTime);
try{
if(sleepTime>0)
{
sleep(sleepTime);
}else{
sleep(30);
}
}catch(Exception e){
}
}
super.run();
}
//
}
您應該看一下lockCanvas調用,該表面可能已被破壞,並且已將空的畫布引用傳遞給view.onDraw()。 API中有一些有關如何處理表面狀態的建議。
http://developer.android.com/reference/android/view/SurfaceHolder.html#lockCanvas()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.