【问题标题】:How to pause/resume SurfaceView from MainActivity?如何从 MainActivity 暂停/恢复 SurfaceView?
【发布时间】:2013-12-12 17:56:21
【问题描述】:

我目前正在创建一个具有 MainActivity 和 SurfaceView 的游戏。 SurfaceView 不是它自己的活动,而是简单地在 MainActivity 中调用。

我想要做的是在 MainActivity (Pause / Resume) 上有一个按钮,它将暂停 SurfaceView 上的渲染并在单击时再次恢复。

我不完全确定该怎么做,在我的 SurfaceView (GameView) 中,我可以停止我的 GameLoopThread,但如果我尝试简单地重新启动它(暂停然后恢复游戏),它什么也不做。

我尝试过暂停/恢复活动本身以及尝试在布尔运行中运行我的 SurfaceView,但似乎都不起作用。

任何想法都将不胜感激!

【问题讨论】:

    标签: android android-activity surfaceview onresume onpause


    【解决方案1】:

    您可以在 SurfaceView 类中创建类似 boolean 的标志,例如 isRunning=false;然后在你开始你的线程之前检查它。还在表面视图中创建两个方法 onPause() 和 onResume()。

    onPause(){
       isRunning=false;
       // make thread null;
    }
    And
    onResume(){
    isRunning=true;
    }
    

    在你的活动中调用这两个方法 onPause() 和 onResume() 方法接受。

    【讨论】:

    • 我现在拥有的是使用我的 GameLoopThread 的 SurfaceView。当我进入暂停按钮时,我尝试将我的 GameLoopThread 布尔值设置为 false(未运行),但是当我单击恢复按钮(将 GameLoopThread 布尔值设置为 true)重新运行我的线程时,它什么也不做。
    • 你实现了Activity类的onPause()和onResume()方法,并在那里调用了SurfaceView的onPause()和onResume()?
    • 哦,我不知道我需要 SurfaceView 中的 onPause() 和 onResume() 方法。这些是否只包括 super.onPause() 和 super.onResume()?
    • No.. 这些是您自己的方法.. 并在您的活动中调用它们.. 在您的 Activitiy 的 onPause() 方法中使用 mSuraceView.onPause()
    【解决方案2】:

    你看过这个吗?

    How to pause/resume thread in Android?

    基本上,您可以将 wait() 和 notifyAll() 与锁定对象结合使用。

    【讨论】:

      猜你喜欢
      • 2011-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-08
      • 2020-06-04
      相关资源
      最近更新 更多