Хочу попробовать использовать SDL для разработки Android-приложения. В принципе разобрался со сборкой и нормально собираю APK.
Для теста написал простое приложение, которое после инициализации тупо крутит event loop в ожидании события SDL_QUIT (после чего вызывается SQL_Quit и функция main выходит). В свободное время экран просто заполняется белым цветом.
Всё работает, но возникла проблема с выходом. Я получаю белый экран, но приложение банально не реагирует на кнопку «назад». Единственный способ выйти - свернуть его и смахнуть в сторону в списке недавних приложений.
Окей. Гуглим, как в SDL определить нажатие кнопки «Назад». Узнаём, что в данном случае приходит событие SDL_KEYDOWN с определённым кодом. Обрабатываю это событие так же как SDL_QUIT - выхожу из event loop.
Теперь приложение нормально закрывается при нажатии на кнопку «Назад». Однако после этого оно отказывается запускаться, пока не смахнёшь его из списка недавних приложений.
Наконец, можно добавить перед return 0 в код main вызов exit(0). Тогда приложение нормально закрывается и нормально стартует заново после этого.
Но, насколько я понимаю, это очень криво с точки зрения Android. К тому же анимация закрытия не отрабатывает - приложение закрывается мгновенно.
Как правильно реализовывать выход из приложения на SDL на Android?
UPD: В некоторых туториалах советуют добавить ручной вызов finish для activity в конец метода run класса SDLMain (точнее не прямой вызов, а различными ухищрениями выполнить вызов finish в UI-потоке). Так вот - это не помогает. Точно также получаю результат, что приложение закрывается, а потом не открывается, пока его вручную не прибить. Да и вроде как в текущей версии кода Java есть ожидание завершения потока SDL и вызов после этого finish. То есть проблема не в том, что Activity не завершается, а в том что приложение после этого попадает в странное состояние, в котором оно продолжает висеть в памяти, но больше не способно запуститься.