从其他活动返回后,SurfaceView为黑色

时间:2014-07-30 13:17:42

标签: android

我为Android推出了一款TicTacToe游戏,并开始新游戏,我呼叫startActvityForResult()让用户在新的Actvity中选择一些选项。然后我调用setResult()finish()返回包含LinearLayout中SurfaceView的gameActivity。

但问题出现了:整个SurfaceView只是一个黑色区域,直到我点击某处,然后它就像它应该的那样:调用onTouchEvent()方法,游戏变得可见。

我有什么想法可以摆脱那个黑屏? 我已经尝试在onResume()/ onPause期间设置LinearLayout和SurfaceView可见/不可见。并且invalidate()postInvalidate()也无法正常工作。

我发现它似乎正确显示,如果表面被绘制两次,所以我通过布尔标志在postInvalidate()内调用draw()

1 个答案:

答案 0 :(得分:0)

如果没有任何代码或更详细的信息,这很难回答,但您应该在onPause() / onResume()onSurfaceDestroyed() /中开始/停止渲染到表面视图onSurfaceCreated()方法。所以基本上,你必须在活动生命周期中正确处理表面视图。

This非常专门处理这个主题(活动生命周期+表面视图)。

作为快速解决方法,您可以尝试在onTouchEvent()onResume中手动拨打onSurfaceCreated()