cocos2dx-lua 3.3出现后台回到游戏时,大部分图片变黑

我的问题有以下2个情况会重现:
1、每次点击通知返回到游戏时,会出现部分图片变黑。
2、再后退等待一定时间,等待时使用了其他APP,回到游戏也会出现部分图片变黑。

如果出现部分图标变黑,那么,调用cocos的退出游戏方法(Director::end())时,会出现游戏重新启动一次。

以下是简单的android(release)log:
退出到后台:
01-06 07:57:31.516 5636-5636/com.xxx.xxx123 D/PhoneWindow﹕ couldn’t save which view has focus because the focused view org.cocos2dx.lib.Cocos2dxGLSurfaceView@40575ea0 has no id.
01-06 07:57:31.606 5636-5647/com.xxx.xxx123 I/GLThread﹕ noticed surfaceView surface lost tid=12
01-06 07:57:31.606 5636-5647/com.xxx.xxx123 W/EglHelper﹕ destroySurface() tid=12
01-06 07:57:31.743 5636-5636/com.xxx.xxx123 W/IInputConnectionWrapper﹕ showStatusIcon on inactive InputConnection

从后台回到游戏,并正常:
01-06 07:57:38.050 5636-5636/com.xxx.xxx123 D/dalvikvm﹕ GC_EXPLICIT freed 680K, 50% free 3918K/7751K, external 1657K/2108K, paused 69ms
01-06 07:57:42.733 5636-5636/com.xxx.xxx123 I/GLThread﹕ onResume tid=12
01-06 07:57:42.760 5636-5647/com.xxx.xxx123 I/GLThread﹕ noticed surfaceView surface acquired tid=12
01-06 07:57:42.760 5636-5647/com.xxx.xxx123 W/GLThread﹕ egl createSurface
01-06 07:57:42.760 5636-5647/com.xxx.xxx123 W/EglHelper﹕ createSurface() tid=12
01-06 07:57:42.763 5636-5636/com.xxx.xxx123 I/Main thread﹕ onWindowResize waiting for render complete from tid=12
01-06 07:57:42.786 5636-5666/com.xxx.xxx123 D/MobclickAgent﹕ App resume from background
01-06 07:57:42.800 5636-5647/com.xxx.xxx123 W/GLThread﹕ onSurfaceChanged(800, 480)
01-06 07:57:42.806 5636-5647/com.xxx.xxx123 I/GLThread﹕ noticing that we want render notification tid=12
01-06 07:57:42.810 5636-5636/com.xxx.xxx123 I/Main thread﹕ onWindowResize waiting for render complete from tid=12
01-06 07:57:42.810 5636-5647/com.xxx.xxx123 W/GLThread﹕ onSurfaceChanged(800, 480)
01-06 07:57:42.863 5636-5647/com.xxx.xxx123 I/GLThread﹕ sending render notification tid=12

从后台回到游戏,并有部分图片变黑:
01-06 08:00:21.676 5636-5636/com.xxx.xxx123 D/dalvikvm﹕ GC_EXPLICIT freed 940K, 52% free 3754K/7751K, external 1727K/2108K, paused 59ms
01-06 08:00:47.726 5636-5636/com.xxx.xxx123 D/dalvikvm﹕ Trying to load lib /data/data/com.xxx.xxx123/lib/libcocos2dlua.so 0x40513a58
01-06 08:00:47.726 5636-5636/com.xxx.xxx123 D/dalvikvm﹕ Shared lib ‘/data/data/com.xxx.xxx123/lib/libcocos2dlua.so’ already loaded in same CL 0x40513a58
01-06 08:00:47.726 5636-5636/com.xxx.xxx123 D/main﹕ cocos_android_app_init
01-06 08:00:47.726 5636-5636/com.xxx.xxx123 D/Cocos2dxActivity﹕ model=GT-I9000
01-06 08:00:47.726 5636-5636/com.xxx.xxx123 D/Cocos2dxActivity﹕ product=GT-I9000
01-06 08:00:47.726 5636-5636/com.xxx.xxx123 D/Cocos2dxActivity﹕ isEmulator=false
01-06 08:00:47.756 5636-5829/com.xxx.xxx123 I/GLThread﹕ noticed surfaceView surface lost tid=30
01-06 08:00:47.900 5636-5636/com.xxx.xxx123 I/GLThread﹕ onResume tid=30
01-06 08:00:48.026 5636-5829/com.xxx.xxx123 I/GLThread﹕ noticed surfaceView surface acquired tid=30
01-06 08:00:48.026 5636-5829/com.xxx.xxx123 W/EglHelper﹕ start() tid=30
01-06 08:00:48.100 5636-5829/com.xxx.xxx123 W/EglHelper﹕ createContext com.google.android.gles_jni.EGLContextImpl@4057e0c0 tid=30
01-06 08:00:48.100 5636-5829/com.xxx.xxx123 I/GLThread﹕ noticing that we want render notification tid=30
01-06 08:00:48.100 5636-5829/com.xxx.xxx123 W/GLThread﹕ egl createSurface
01-06 08:00:48.100 5636-5829/com.xxx.xxx123 W/EglHelper﹕ createSurface() tid=30
01-06 08:00:48.136 5636-5666/com.xxx.xxx123 D/MobclickAgent﹕ App resume from background
01-06 08:00:48.163 5636-5829/com.xxx.xxx123 W/GLThread﹕ onSurfaceCreated
01-06 08:00:49.740 5636-5638/com.xxx.xxx123 D/dalvikvm﹕ GC_CONCURRENT freed 321K, 45% free 4317K/7751K, external 1628K/2108K, paused 30ms+21ms
01-06 08:00:51.303 5636-5829/com.xxx.xxx123 W/GLThread﹕ onSurfaceChanged(800, 480)
01-06 08:00:51.316 5636-5829/com.xxx.xxx123 I/GLThread﹕ sending render notification tid=30
01-06 08:00:51.363 5636-5829/com.xxx.xxx123 D/JniHelper﹕ JniHelper::getJavaVM(), pthread_self() = 7250992
01-06 08:00:51.366 5636-5829/com.xxx.xxx123 W/dalvikvm﹕ JNI WARNING: DeleteLocalRef(0x4062e2c0) failed to find entry (valid=1)
01-06 08:00:51.366 5636-5829/com.xxx.xxx123 D/JniHelper﹕ JniHelper::getJavaVM(), pthread_self() = 7250992
01-06 08:00:52.060 5636-5829/com.xxx.xxx123 D/JniHelper﹕ JniHelper::getJavaVM(), pt
read_self() = 7250992

关于部分图片变黑我所知道的一种可能性是从后台返回时资源图片等还未重新load完毕造成的,可以在返回时让程序等个0.几秒在执行其他操作试试

出线部分图片变黑的时候,回到游戏时,是有等待几秒的过程。

关键是,它回到游戏时不知为什么调用了cocos_android_app_init。

可能在游戏进入后台后,该游戏所占用的内存空间被系统回收了部分,从而出现这种情况

你们的图片是不是直接用data生成texture使用的?

调的是cc.Sprite:create(“bg.jpg”),没直接使用texture

变黑的问题已经解决:
原因是:我使用了图片加密。
但是 ,我只在Image::initWithImageFile(const std::string& path) 中加入了解码;

所以在VolatileTextureMgr::reloadAllTextures() 重新加载的图片没被解码:
在731行左右加入解码就解决问题了:
Data data = FileUtils::getInstance()->getDataFromFile(vt->_fileName);
unsigned long nSize = data.getSize();
unsigned char* pBuffer = data.getBytes();
//如果是加密后缀文件,就解码
if(vt->_fileName.find(".jm") != std::string::npos)
{
//解码
}
if (image && image->initWithImageData(pBuffer, nSize))

还一个没解决:
如果出现部分图标变黑,那么,调用cocos的退出游戏方法(Director::end())时,会出现游戏重新启动一次。

请问 楼主 这个问题解决了吗?图片变黑 退出游戏 游戏会重启 我也遇到了类似地问题 表现为贴图消失 文字会变白块 出现这个问题之后 退出游戏 游戏会重启

我的已经解决了。
http://blog.csdn.net/watt520/article/details/9859033

再有就是设置activity为
android:launchMode=“singleTask”

这个问题在android5.0以上系统会因为onCreate重复调用,导致系统内存不足哦.在testin上测试,几乎100%会出现!解决方法是调协

android:launchMode=“singleTask”
或<pre class="brush:xml; toolbar: true; auto-links: false;">android:launchMode="singleInstance"

因为standard和singleTop都有可能重新创建intent,导致onCreate重复调用,创建多个cocos2dx实例.
但是设置为singleTask和singleInstance在接入SDK时会有些问题,因为有些SDK在显示SDK的界面显示时,如果点击home键返回到桌面,然后再点击游戏ICON进入(从正在运行的后台任务列表中切回时不会出现),SDK的界面会消失掉,只显示游戏界面.比如九游UC的.有些做的比较好的SDK还能再次调出界面,但是有些SDK就调不出SDK的界面了.:6::6::6::6::6::6::6:
跪求解决方法啊!:6::6::6::6::6::6::6::6::6::6: