转自:http://blog.csdn.net/wolfking_2009/article/details/8824931

2013年5月17日更新:对于之前说的资源释放问题,cocos2d-x 2.1.3已经解决,就是说中断之后不释放资源,估计方法跟之前提到的差不多,我没有仔细研究过....

在调试的过程中发现,如果中断处理的时候,让游戏显示暂停界面,方法不当有可能会出问题,本人就遭遇了,返回时直接退出游戏,或者不显示暂停界面的问题。后来发现如果创建的暂停界面层,在AppDelegate::applicationDidEnterBackground方法里创建会没有问题~如果在AppDelegate::applicationWillEnterForeground()方法里创建就有可能出现如上问题~

再来说下声音中断~其实声音中断有个比较魂淡的地方,就是声音中断时,可以直接stop,返回时再play,但是android上发现恶心的问题,就是游戏的时候直接点电源关掉屏幕,再返回的时候,在锁屏界面,游戏就又继续了,意思是锁屏界面就已经调用AppDelegate::applicationWillEnterForeground()~机制问题没办法,还没有想到解决办法~

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

今天在android手机上测试游戏声音的中断,发现比较恶心的事情是,中断完返回游戏后,发现游戏长时间卡顿~

网上翻帖子~发现是游戏资源被释放掉了,回来的时候要重新加载~群里有大侠说是CCTextureCache的原因~

用ios测试了下,发现没有问题,然后开始找CCTextureCache的问题了~发现了一个宏

/** Reload all textures
    It's only useful when the value of CC_ENABLE_CACHE_TEXTURE_DATA is 1
    */
    static void reloadAllTextures();

显然跟CC_ENABLE_CACHE_TEXTURE_DATA 这个宏有关。

找到源头,发现

/** @def CC_ENABLE_CACHE_TEXTURE_DATA
Enable it if you want to cache the texture data.
Basically,it's only enabled in android

It's new in cocos2d-x since v0.99.5
*/
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
    #define CC_ENABLE_CACHE_TEXTURE_DATA       1
#else
    #define CC_ENABLE_CACHE_TEXTURE_DATA       0
#endif

好嘛~只有android的使用了这个宏~

关闭之,测试,哭了,回去后黑屏~

继续翻贴,发现

http://novacreo.com/%E7%A8%8B%E5%BA%8F%E7%BB%84/%E8%BF%94%E5%9B%9Eandroid%E6%B8%B8%E6%88%8F%E9%BB%91%E5%B1%8F%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/

//原帖内容如下:

返回Android游戏黑屏解决办法

这几天逛cocos2d-x.org论坛,发现cocos2d-x的作者放出来一个帖子,用来解决返回Android游戏加载资源时黑屏的问题。帖子过些日子估计就沉了,所以转出来,以供后面查询。

需要修改三个文件:

1) cocos2dx/platform/CCPlatformMacros.h

将Line84修改为 #define CC_ENABLE_CACHE_TEXTURE_DATA       0

2)cocos2dx/platform/android/java/src/org/cocos2dx/lib/Cocos2dxGLSurfaceView.java

注释掉Line167。

3)android工程目录下jin/hellocpp/main.cpp

注释掉Line32~43。

基本原理就是在activity进入后台后,不清除texture缓存,这样在activity回到前台后,不需要重新load资源。

我在自己的游戏上试了一把,修改之前切回游戏需要4秒左右时间,修改后不用1秒,可谓瞬间完成。

不过这个解决方案有些小问题,当有其他surfaceView的activity,比如集成了Admob广告后,切回来时只能看到广告,而不显示游戏画面。有个老外Pablo Tonello回复帖子说没有集成Admob也遇到了这种情况。目前还不知道是啥问题,有待慢慢研究。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

这个帖子倒是解决问题了,不过瞧那意思插入其他的SDK可能还有问题~

待解决吧

还有个帖子是说做个load界面来显示,以遮住卡顿~~~~~~~~~~~~

帖子地址:http://blog.csdn.net/yanghuiliu/article/details/7362019

如果有更好的办法,麻烦告诉我一下~THX

cocos2d-x android黑屏后返回游戏卡顿的更多相关文章

  1. android灭屏后调用binder通讯竟然影响了socket的POLL_OUT事件,怪事。

    当你的android在灭屏(休眠)时分派(dispatch) Ice调用过程中,如果创建了新的进程,你的响应将不会预期那样工作,尽管你已经调用 ice_response或 ice_exception, ...

  2. 如何处理Win10电脑黑屏后出现代码0xc0000225的错误?

    有些Win10系统的用户反映电脑在开机的时候突然变成黑屏,还出现提示0xc0000225的错误代码,不知道该怎么去解决.一般来说,遇到这种情况一般是系统的注册表出现了问题.下面就为大家分享一下相应的解 ...

  3. 4.Android App 优化之消除卡顿

    转载:http://gold.xitu.io/post/582583328ac247004f3ab124 1, 感知卡顿 用户对卡顿的感知, 主要来源于界面的刷新. 而界面的性能主要是依赖于设备的UI ...

  4. android 特卖列表倒计时卡顿问题

    在Android的开发中,我们经常遇见倒计时的操作,通常使用Timer和Handler共同操作来完成.当然也可以使用Android系统控件CountDownTimer,这里我们封装成一个控件,也方便大 ...

  5. Android ScrollView嵌套Recyclerview滑动卡顿,松手即停问题解决;

    假如你的布局类似这样的: <ScrollView android:layout_width="match_parent" android:layout_height=&quo ...

  6. Android fragment 切换载入数据卡顿问题

    接着上一篇项目的进度.上一篇讲了怎样利用fragment来实现下拉菜单.公用菜单,以实现切换主界面数据的功能,这时候遇到的问题是:使用了fragment的切换界面方法.但载入的数据太多.用户从一个界面 ...

  7. Android 布局渲染流程与卡顿优化

    文章内容概要 一.手机界面UI渲染显示流程 二.16ms原则 三.造成卡顿的原因 四.过度绘制介绍.检测工具.如何避免造成过度绘制造成的卡顿 一.手机界面UI渲染显示流程 大家都知道CPU(中央处理器 ...

  8. iOS 添加阴影后 屏幕卡顿 抖动

    - (void)awakeFromNib { // Initialization code _btnViews.layer.shadowPath =[UIBezierPath bezierPathWi ...

  9. ios UICollectionView 加载数据后 滑动卡顿问题

    最近项目的资源图片变大了,滑动时总是卡顿,在这里用NSOperationQueue解决了一下 .h 文件 @interface CollectionViewCell : UICollectionVie ...

随机推荐

  1. 树莓派 Linux 剪贴板

    安装: apt-get install xsel 显示剪贴板中的数据: xsel -b -oxsel -b -o 向剪贴板中追加数据: xsel -b -a 覆盖剪贴板中的数据: xsel -b -i ...

  2. SQL0668N 由于表 "db2inst1.test" 上的原因代码 "3",所以不允许操作(解因为LOAD引起的LOAD暂挂状态锁)

    DB2解因为LOAD引起的LOAD暂挂状态锁   一般解锁命名是,SET INTEGRITY FOR temp_test IMMEDIATE CHECKED   但是load暂挂状态是解不了的,可以l ...

  3. CDB和PDB基本管理

    CDB和PDB基本管理 这篇文章主要介绍CDB和PDB的基本管理,资料来源oracle官方. 基本概念: Multitenant Environment:多租户环境 CDB(Container Dat ...

  4. 网页元素定位神器之Xpath详解

    摘要: 经常在工作中会使用到XPath的相关知识,但每次总会在一些关键的地方不记得或不太清楚,所以免不了每次总要查一些零碎的知识,感觉即很烦又浪费时间,所以对XPath归纳及总结一下. ...     ...

  5. 转:使用 JMeter 完成常用的压力测试

    使用 JMeter 完成常用的压力测试 就目前 Java EE 的平台下开发的软件来说,这种节点通常可能是:Web 服务器.数据库服务器和 JMS 服务器.它们都是请求主要发生的地点,请求频率较其它的 ...

  6. DzzOffice结合office web Apps私有部署的实例

    很多朋友都想在自己使用的DzzOffice中,调用本地部署的office web Apps server. 下面我就直接从头到尾的将部署全部过程分享给大家. 准备条件:两台服务器,配置稍高点,以免卡顿 ...

  7. CH340在STM32实现一键下载电路

    在做基于STM32的多功能MP3播放器的课题时,在程序下载这部分时借鉴了正点原子开发板上的一键下载电路,采用CH340G这款芯片设计. 在画PCB初期原理图部分,对采用CH340G设计的一键下载电路不 ...

  8. OpenCV安装要点

    OpenCV安装要点1.设置系统和用户环境变量PATH指向opencv\build\x86\vc10\bin或者opencv\build\x64\vc10\bin2.新建用户环境变量OpenCV指向o ...

  9. Tex使用

    表格标题改变成中文的"表": \renewcommand{\tablename}{表} 同样图片的Figure改为中文的“图”: \renewcommand{\figurename ...

  10. vim7.4 安装 k-vim

    注:在虚拟机 kali 1.9中安装完成之后,无法连接到网络(目前没找到有效的解决方法,不知道是不是通病,本人安装了两次,都一样),cpu占用率 70%+  ,建议安装之前,先建立快照,否则,后悔莫极 ...