关于SurfaceView的问题

半世苍凉 提交于 2019-12-09 15:22:04
用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方法。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!