我用的版本是cocos2d-x3.2,在android上从后台切换到前台时会出现一段时间黑屏,发现是因为:
void Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit(JNIEnv* env, jobject thiz, jint w, jint h)
{
auto director = cocos2d::Director::getInstance();
auto glview = director->getOpenGLView();
if (!glview)
{
glview = cocos2d::GLView::create(“Android app”);
glview->setFrameSize(w, h);
director->setOpenGLView(glview);
cocos_android_app_init(env, thiz);
cocos2d::Application::getInstance()->run();
}
else
{
AndroidReloadLayer::create();
cocos2d::GL::invalidateStateCache();
cocos2d::GLProgramCache::getInstance()->reloadDefaultGLPrograms();
cocos2d::DrawPrimitives::init();
cocos2d::VolatileTextureMgr::reloadAllTextures();
cocos2d::EventCustom recreatedEvent(EVENT_RENDERER_RECREATED);
director->getEventDispatcher()->dispatchEvent(&recreatedEvent);
director->setGLDefaultValues();
}
}
在调用reloadAllTextures()需要一些时间。
网上查了一下,发现很多人都遇到这个问题,大致有两种方法,
一种是:将CC_ENABLE_CACHE_TEXTURE_DATA设置为0, 将上面的else屏蔽掉,大致是程序进入后台的时候不是释放内存,重新进到前台时也不需要重新加载资源。
另外一种是:加一个加载界面,显示一个进度条。。。
我试了这两种方法都没有用,求大神指导。。。。


