通过制作我的游戏线程(与surfaceview保持/同步)wait / notifyAll,我可以暂停/恢复我的游戏 . 这一切都运行在游戏暂停按钮 .

但是,当我点击主页/后退按钮时,我可以暂停我的游戏,但是当我通过点击其图标恢复游戏时,我会收到非响应式游戏画面给我 .

我已将日志放在OnResume()方法上,但在LogCat中没有打印任何内容!如果我点击我的游戏屏幕,我会在游戏活动中收到错误对话框“强制关闭”或“等待” .

为什么我得到这个无响应的屏幕,好像我的应用程序暂停后挂起?如何以与游戏暂停/恢复按钮相同的方式处理物理按钮?

这是我的logcat操作视图 . 你可以看到onResume sop没有被打印类似于onPause .

编辑:由我的暂停/恢复按钮和onPause / onResume函数调用的代码,其中“this”是线程类本身

protected void setPause(){

synchronized (this) {

isPaused = true;

}

}

protected void setResume(){

synchronized (this) {

isPaused = false;

this.notifyAll();

}

}

游戏循环代码:

synchronized (this) {

while (running) {

if (isPaused) {

try {

this.wait();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

} else {

Canvas c = null;

try {

c = view.getHolder().lockCanvas();

synchronized (view.getHolder()) {

view.onDraw(c);

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

} finally {

if (c != null) {

view.getHolder().unlockCanvasAndPost(c);

}

}

sleepTime = ticksPS

- (System.currentTimeMillis() - startTime);

try {

if (sleepTime > 0)

sleep(sleepTime);

else

sleep(10);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

这是我如何从表面视图调用它:

public void surfaceCreated(SurfaceHolder holder) {

// start the game loop

System.out.println("Starting Game Loop @@@@@@@@@");

if(isPaused){

System.out.println("GamePaused");

gameLoopThread.setResume();

}

else{

System.out.println("Game Starting");

gameLoopThread.setRunning(true);

}

gameLoopThread.start();

}

编辑2:如果我使用暂停按钮暂停我的游戏并让我的手机自动锁定...恢复后我可以正常播放没有任何问题 . 根据日志,我看到在这种情况下不会调用被破坏的表面 .

java如何实现游戏暂停和恢复_Android:游戏循环暂停/恢复问题相关推荐

  1. 基于Java实现的贪吃蛇大作战小游戏

    贪吃蛇大作战小游戏 整体思路与架构 本项目主要分为三个部分,即UI界面.游戏逻辑与网络传输. UI界面部分,主要是为了实现不同界面之间的切换.包括了注册登陆窗口(loginFrame)与游戏主窗口(G ...

  2. unity2D横版游戏教程终章-主菜单和暂停菜单

    最后一节我们做一下主菜单和暂停菜单 我们创建一个新的scene,命名为Menu,这个就是主菜单场景 我们双击Menu进去设置一下我们的UI 我们先添加一下Canvas,在Canvas下面创建连个Pan ...

  3. 用JAVA实现一个简易的打砖块小游戏

    概述 利用java实现打砖块小游戏,游戏界面包括以下元素 顶部的各色砖块 底部的挡板 小球 游戏信息展示面板 玩法包括 使用鼠标或者键盘移动挡板 打掉砖块,得分 每一局有3次机会,挡板没有接到小球,机 ...

  4. java贪吃蛇代码_java实现贪吃蛇游戏代码(附完整源码)

    先给大家分享源码,喜欢的朋友点此处下载. 游戏界面 GUI界面 java实现贪吃蛇游戏需要创建一个桌面窗口出来,此时就需要使用java中的swing控件 创建一个新窗口 JFrame frame = ...

  5. 猜物品游戏java编程_小猿圈Java初学者练习小案例:猜数字游戏

    对于Java初学者,如果没有好的引导,可能会觉得自己学什么都不好,学什么都不会,这个时候就要给他们一下小的案例,让他们去实践一下,让他们知道自己学的东西是可以用到的,小猿圈java讲师为你准备了Jav ...

  6. java 后台跳出提示_小猿圈Java初学者练习小案例:猜数字游戏

    对于Java初学者,如果没有好的引导,可能会觉得自己学什么都不好,学什么都不会,这个时候就要给他们一下小的案例,让他们去实践一下,让他们知道自己学的东西是可以用到的,小猿圈java讲师为你准备了Jav ...

  7. 【Cocos游戏实战】功夫小子第七课之游戏主功能场景逻辑功能和暂停功能场景的分析和实现...

    CSDN的markdown编辑器是吃屎了么! !.什么玩意.!写了一半写不了东西还全没了,搞个毛线! 本节课的视频教程地址是:第七课在此  假设本教程有帮助到您,希望您能点击进去观看一下,并且如今注冊 ...

  8. java编写一个彩票开奖的模拟程序.游戏共有两种玩法,一种是21选5,即玩家输入5个1到21内的不重复的数。另外一种玩法是6+1玩法,即要求玩家输入7个整数,代表所购买的彩票号码,最后一个是特码。

    java编写一个彩票开奖的模拟程序.游戏共有两种玩法,一种是21选5,即玩家输入5个1到21内的不重复的数.另外一种玩法是6+1玩法,即要求玩家输入7个整数,代表所购买的彩票号码,最后一个是特码. 具 ...

  9. 用java写猜拳游戏,Java写人机猜拳游戏(可扩展其他游戏或其他参与者)

    初学Java,写一个控制台输入输出的小游戏,模拟人机猜拳.为了扩展性稍微强一些,这个小游戏代码有些复杂,但确实可以扩展其他游戏或者其他参与者的. 代码还有一些小问题,后面贴出来... /******* ...

  10. java 拼图游戏_Java学员作品-拼图游戏

    由于大多数的手机都内置了Java的运行环境,加上Java语言自身的跨平台特性,Java成为了编写手机游戏时最常使用的语言之一. 拼图游戏很多人都玩过,它的游戏规则是将图片进行分割,然后将顺序打乱,要求 ...

最新文章

  1. android c聊天功能,Android实现简单C/S聊天室应用
  2. 上手!深度学习最常见的26个模型练习项目汇总
  3. 十一、探索性数据分析应用案例
  4. 如果你也会C#,那不妨了解下F#(4):了解函数及常用函数
  5. P4196 [CQOI2006]凸多边形 /【模板】半平面交
  6. 小程序 获取当前所在地理位置 城市 信息
  7. Gradle Issue: OutOfMemoryError: PermGen space
  8. 手机上最好用的五笔输入法_聊聊手机最好用的几个功能
  9. vsftpd虚拟用户使用实验报告
  10. 使用windows Builder的一个中文乱码问题解决
  11. python机器人编程教程入门_机器人编程怎么入门?
  12. react+UmiJS+Antd Pro简介
  13. Windows 10 安装 IIS 管理器
  14. 2022阿里巴巴云栖大会
  15. 智能门锁电路图_智能门锁原理一览 你pick哪一种?
  16. 【DDD 8】领域驱动设计实践 —— Application层实现
  17. [SPRD CAMERA] 4 HAL Camera open流程一
  18. H.264 AVCC header
  19. 自制智能手机电话APP
  20. 2021-06-29 连续非空子序列

热门文章

  1. uva 10330(最大流)
  2. VMware基础架构和运营管理
  3. 深入理解HTTP消息头
  4. web 服务器的作用
  5. ZPCategory
  6. spring cloud构建java版 b2b2c o2o电子商务云商平台
  7. BZOJ4311:向量——题解
  8. java程序员学习路线图 java程序员进阶路线
  9. php函数默认参数放在哪测,php函数默认参数的实例代码
  10. ARMv8-A vs ARMv7 Registers