好吧我正在创建一个Android游戏,其中玩家走过网格样式地图。最初创建mainActivity
时,会调用surfaceCreated
方法,然后调用surfaceChanged
方法,然后等待用户输入。当玩家点击屏幕一侧时mainActivity
再次由getContext().startActivity(intent);
启动,这会重新创建mainActivity
并加载新地图。这会重新创建表面。 surfaceCreated
方法,然后surfaceChanged
方法,然后surfaceDestroyed
方法相互调用。禁用surfaceView会阻止用户控制屏幕上的对象。
如何在重新创建活动时调用surfaceDestroyed
方法?
答案 0 :(得分:0)
重新创建活动是一项相当重要的操作。所有旧UI都被拆除,以释放新活动的资源。
SurfaceView的Surface组件在某种程度上是异步处理的,这就是通过回调报告创建/销毁事件的原因。向包含SurfaceHolder参数值的每个回调添加日志消息,以便可以看到正在创建或销毁Surface的哪个实例 - 我怀疑在“创建”之后,您将获得旧表面的“已销毁”新的表面,这让你搞砸了。
您可能想要做的是让Activity保持运行并只更新您的状态。这会更有效率。