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