簡體   English   中英

Surfaceview Android

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM