用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方法。