When the main function returns, SDL doesn’t kill the process. You can still see your app with black screen in the window selector. When the user opens the app again from the launcher, SDL will invoke SDL_main again, but without re-initializing globals. In my case it will immediately quit, as the global variable quit is already true. I can only open my app again after tapping “Force Stop” in Android.
The problem was solved, by adding exit(0) at the end, but the app still remains visible in the window selector.
I believe this is a bug and a risk for new SDL users.
global variable: bool quit = false;
void SDL_main() {
while(!quit)
{ … }
SDL_Quit();
}