The right way to handle opengl context on Android?

I have read some conflicting information on the subject of opengl contexts. I recently ported my game over to android using SDL2 and it works fine on both of my phones. I can do orientation changes, hit home and come back, it seems to work. However on a friends lower end phone when he does an orientation change there are some visual artifacts which are apparently resolved when he hits home, and comes back.

I have read that you are supposed to recreate the opengl context, reload all textures, shaders, etc when an orientation change or background event occurs. I have also read that unlike directx, opengl should never loose its context, or that it’s handled automatically and the application itself shouldn’t try to keep copies of textures in memory to reload. So I’m not really sure what to think here at this point.

I added some functionality to keep the textures in system memory, and also to catch the android events and delete/recreate the opengl context. Here is what I am doing right now:

int SDLCALL gameEventFilter(void* userdata, SDL_Event* event)
{
switch(event->type)
{
case SDL_APP_TERMINATING:
Log().Get(LOG_INFO) << “SDL_APP_TERMINATING”;
game->setDone(true);
break;

	case SDL_APP_WILLENTERBACKGROUND:
		Log().Get(LOG_INFO) << "SDL_APP_WILLENTERBACKGROUND";
		game->enterBackground();
		SDL_GL_DeleteContext(gContext);
	break;

	case SDL_APP_WILLENTERFOREGROUND:
		Log().Get(LOG_INFO) << "SDL_APP_WILLENTERFOREGROUND";
	break;

	case SDL_APP_DIDENTERFOREGROUND:
		Log().Get(LOG_INFO) << "SDL_APP_DIDENTERFOREGROUND";
		createGLContext ();
		game->enterForeground();
	break;
	}
return 1;
}

game->enterForeground() reloads all the shaders and textures. However in the logs I get:

I/eh2 (24012): SDL_APP_WILLENTERFOREGROUND
I/eh2 (24012): SDL_APP_DIDENTERFOREGROUND
I/eh2 (24012): createGLContext()
W/ImageView3DMsgHandler( 1343): bindService state=BOUND not binding service as it is either already bound or not ready

… stuff

E/libEGL (24012): eglMakeCurrent:706 error 3006 (EGL_BAD_CONTEXT)
W/Adreno-EGL(24012): <qeglDrvAPI_eglMakeCurrent:2935>: EGL_BAD_ACCESS
E/libEGL (24012): eglMakeCurrent:775 error 3002 (EGL_BAD_ACCESS)
I/eh2 (24012): resizeWindow() w=1196 h=720
E/libEGL (24012): call to OpenGL ES API with no current context (logged once per thread)

And the screen is black when the application comes back. Any advice to put me on the right path would be most appreciated.

Thanks.

btw, I am targeting api 10, and opengles2