重新创建活动后,Surface将被销毁

时间:2015-06-03 02:01:00

标签: java android android-activity surfaceview android-context

好吧我正在创建一个Android游戏,其中玩家走过网格样式地图。最初创建mainActivity时,会调用surfaceCreated方法,然后调用surfaceChanged方法,然后等待用户输入。当玩家点击屏幕一侧时mainActivity再次由getContext().startActivity(intent);启动,这会重新创建mainActivity并加载新地图。这会重新创建表面。 surfaceCreated方法,然后surfaceChanged方法,然后surfaceDestroyed方法相互调用。禁用surfaceView会阻止用户控制屏幕上的对象。

如何在重新创建活动时调用surfaceDestroyed方法?

1 个答案:

答案 0 :(得分:0)

重新创建活动是一项相当重要的操作。所有旧UI都被拆除,以释放新活动的资源。

SurfaceView的Surface组件在某种程度上是异步处理的,这就是通过回调报告创建/销毁事件的原因。向包含SurfaceHolder参数值的每个回调添加日志消息,以便可以看到正在创建或销毁Surface的哪个实例 - 我怀疑在“创建”之后,您将获得旧表面的“已销毁”新的表面,这让你搞砸了。

您可能想要做的是让Activity保持运行并只更新您的状态。这会更有效率。