cocos2d-x android黑屏后返回游戏卡顿
转自: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的使用了这个宏~
关闭之,测试,哭了,回去后黑屏~
继续翻贴,发现
//原帖内容如下:
返回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黑屏后返回游戏卡顿的更多相关文章
- android灭屏后调用binder通讯竟然影响了socket的POLL_OUT事件,怪事。
当你的android在灭屏(休眠)时分派(dispatch) Ice调用过程中,如果创建了新的进程,你的响应将不会预期那样工作,尽管你已经调用 ice_response或 ice_exception, ...
- 如何处理Win10电脑黑屏后出现代码0xc0000225的错误?
有些Win10系统的用户反映电脑在开机的时候突然变成黑屏,还出现提示0xc0000225的错误代码,不知道该怎么去解决.一般来说,遇到这种情况一般是系统的注册表出现了问题.下面就为大家分享一下相应的解 ...
- 4.Android App 优化之消除卡顿
转载:http://gold.xitu.io/post/582583328ac247004f3ab124 1, 感知卡顿 用户对卡顿的感知, 主要来源于界面的刷新. 而界面的性能主要是依赖于设备的UI ...
- android 特卖列表倒计时卡顿问题
在Android的开发中,我们经常遇见倒计时的操作,通常使用Timer和Handler共同操作来完成.当然也可以使用Android系统控件CountDownTimer,这里我们封装成一个控件,也方便大 ...
- Android ScrollView嵌套Recyclerview滑动卡顿,松手即停问题解决;
假如你的布局类似这样的: <ScrollView android:layout_width="match_parent" android:layout_height=&quo ...
- Android fragment 切换载入数据卡顿问题
接着上一篇项目的进度.上一篇讲了怎样利用fragment来实现下拉菜单.公用菜单,以实现切换主界面数据的功能,这时候遇到的问题是:使用了fragment的切换界面方法.但载入的数据太多.用户从一个界面 ...
- Android 布局渲染流程与卡顿优化
文章内容概要 一.手机界面UI渲染显示流程 二.16ms原则 三.造成卡顿的原因 四.过度绘制介绍.检测工具.如何避免造成过度绘制造成的卡顿 一.手机界面UI渲染显示流程 大家都知道CPU(中央处理器 ...
- iOS 添加阴影后 屏幕卡顿 抖动
- (void)awakeFromNib { // Initialization code _btnViews.layer.shadowPath =[UIBezierPath bezierPathWi ...
- ios UICollectionView 加载数据后 滑动卡顿问题
最近项目的资源图片变大了,滑动时总是卡顿,在这里用NSOperationQueue解决了一下 .h 文件 @interface CollectionViewCell : UICollectionVie ...
随机推荐
- JAVA中的成员变量与局部变量
package com.imooc; //1.定义一个类 public class Telphone { //2.属性(成员变量)有什么 float screen; float cpu; float ...
- 删除binlog的方法
不知道你有没有为mysql的binlog占用大量磁盘感到无奈,my.cnf里binlog的size可以设置多大做分割,但没有看到删除的配置,在mysql里show了一下variables, mysql ...
- C# 对Excel 单元格格式, 及行高、 列宽、 单元格边框线、 冻结设置
一.对行高,列宽.单元格边框等的设置 这篇简短的文字对单元格的操作总结的比较全面,特此转载过来. private _Workbook _workBook = null; private Workshe ...
- 多种css3时尚侧栏菜单展开显示效果Off-Canvas Menu Effects
今天我们想分享多种css3时尚侧栏菜单展开显示效果.侧边栏应用广泛,我们之前已经产生了一些效果灵感.风格演变,今天我们要展示一套新的灵感的现代效果.不同的布局和菜单的同步转换和页面可以让一切看起来更有 ...
- nmon基础
nmon是分析 AIX 和 Linux 性能的免费工具 最简单的安装方式(Ubuntu apt源) sudo apt-get install nmon 在terminal下打开nmon 敲CMD,出现 ...
- multi-catch和try-catch异常处理
multi-catch属于JDK1.7之后出现的,举例如下: class FactoryTest { public static Fruits getInstance(String className ...
- Epic - Snake Sequence
You are given a grid of numbers. A snakes equence is made up of adjacent numbers such that for each ...
- kali 更新源
个人收集的kali 更新源: 修改更新源: vim /etc/apt/sources.list 更新源列表包: #apt-get update 更新系统软件: #apt-get upgrade #官方 ...
- Tcl之group arguments
1 doubel quotes This allows substitutions to occur within the quotations - or "interpolation&qu ...
- 第一个自定义HTML网页
前言 已经好几天没玩LOL了,实在手痒,下载了游戏,又卸载了,坦言:毛爷爷说的”好好天天向上“,真不容易.但还是回到学习个状态了,开始写,就“根本停不下来”,我也慢慢感受到代码的快乐了,并且想总结出一 ...