java - Android主 Activity 的元素在按下子 Activity 的后退按钮后没有响应

标签 java android android-activity back-button restart

我的游戏应用程序中有两项 Activity 。一个带有两个按钮的父菜单 Activity (每个按钮都有一个 onClick)和一个包含游戏循环的子(游戏) Activity 。

当我在游戏 Activity 中按后退按钮时,菜单似乎已正确恢复:两个按钮都位于正确的位置并且看起来像以前一样。

问题是按钮不再起作用。安卓的后退按钮也是如此。虽然点击后退按钮会闪烁,但没有任何反应。

我的猜测是它与android的内存管理或游戏循环有关。我销毁 SurfaceView 的 surfaceDestroyed 内的游戏线程:

@Override
public void surfaceDestroyed(SurfaceHolder holder) {
    boolean retry = true;
    while (retry) {
        try {
            gameEngine.join();
            retry = false;
        } catch (InterruptedException e) {

        }
    }
}

我没有使用自定义重写方法来恢复和重新启动。由于 Activity 的外观可以很好地恢复,并且在恢复到菜单 Activity 时调用 onResume() 方法,因此我认为没有办法对其进行更深入的调试。

最佳答案

问题是子 Activity 中正在运行的线程没有正确停止 - 我在加入之前缺少 setRunning(false) 。我认为 UI 线程无论如何都完成了它们的工作。修好线后,后退按钮可以正常使用。

关于java - Android主 Activity 的元素在按下子 Activity 的后退按钮后没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32343379/

相关文章:

java - 在 ForkJoinpool 上使用 CompletableFuture 并避免线程等待

java - Spring Security 使用正确的凭据无法进行身份验证

android - Intent 或直接访问不同类的公共(public)变量

java - getLongArrayExtra 返回 null

java - 在 Java 中,您可以浏览嵌套 zip 文件的内容而不膨胀父文件吗?

java - 我自己的 android 库的单元测试框架

android - 如果产品是部分硬件部分订阅,Android/iOS 应用程序是否需要使用苹果或谷歌的应用内购买 API?

php - 如何在android应用程序和php服务器之间同步数据?

android - Activity 方向继承自父级

android - 从 Activity 中监听 LocationChanged