用SurfaceView寫遊戲的時候,碰見一個奇怪的問題。 程序運行->按HOME鍵 Activity調用的順序是onPause->onStop SurfaceView調用了surfaceDestroyed方法 而後再切回程序 Activity調用的順序是onRestart->onStart->onResume SurfaceView調用了surfaceChanged->surfaceCreated方法 切回後程序運行良好。 可按掛斷鍵或鎖定屏幕 Activity只調用onPause方法 解鎖後Activity調用onResume方法 SurfaceView什麼方法都不調用 可是不能更新屏幕。該問題只存在於真機上(在G2上測試),模擬器運行良好。 懷疑是否是SurfaceHolder不能得到Canvas,通過聯機DEBUG,程序運行正常,仍是不能更新屏幕,不知道是否是SurfaceView的bug。感受SurfaceView不可見後,必須從新surfaceCreated才能正常工做。 解決辦法 在onResume中調用setContentView( view ),SurfaceView會調用surfaceChanged->surfaceCreated方法。