【问题标题】:Surface is destroyed after the activity has been recreated重新创建活动后,Surface 被销毁
【发布时间】:2015-08-17 01:02:43
【问题描述】:

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

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

【问题讨论】:

  • 欢迎来到 SO 并感谢您的发帖。请浏览help center on posting code。更多音乐会代码示例将改善您的帖子(例如,MVCE)。此外,您可以使用反引号来格式化内联代码。

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


【解决方案1】:

重新创建 Activity 是一项相当重量级的操作。所有旧的 UI 都被拆除,为新的 Activity 腾出资源。

SurfaceView 的 Surface 组件在某种程度上是异步处理的,这就是通过回调报告创建/销毁事件的原因。将日志消息添加到包含 SurfaceHolder 参数值的每个回调中,以便可以查看正在创建或销毁 Surface 的哪个实例——我怀疑在为新的表面,这让你很困惑。

您可能想要做的是让 Activity 继续运行并更新您的状态。这样会更有效率。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-19
    • 1970-01-01
    • 2022-11-13
    • 1970-01-01
    • 1970-01-01
    • 2019-11-23
    相关资源
    最近更新 更多