LINUX.ORG.RU

История изменений

Исправление EXL, (текущая версия) :

В обёртке main в файле src/main/android/SDL_android_main.c, которую ты компилируешь и линкуешь в свою so-шку, есть такое:

    ...
    /* Run the application. */

    status = SDL_main(argc, argv);

    /* Release the arguments. */

    for (i = 0; i < argc; ++i) {
        SDL_free(argv[i]);
    }

    /* Do not issue an exit or the whole application will terminate instead of just the SDL thread */
    /* exit(status); */

    return status;
    ...

Теперь приложение нормально закрывается при нажатии на кнопку «Назад». Однако после этого оно отказывается запускаться, пока не смахнёшь его из списка недавних приложений.

У меня вроде была похожая проблема. Насколько я помню, помимо выхода из event loop нужно вызывать ещё SDL_Quit() перед return.

Но, насколько я понимаю, это очень криво с точки зрения Android.

Для нативных приложений это норм, иначе библиотека остаётся висеть в памяти и при следующем запуске оно либо не запустится, либо запустится с различными лагами, по-крайней мере так было у меня.

Исправление EXL, :

В обёртке main в файле src/main/android/SDL_android_main.c, которую ты компилируешь и линкуешь в свою so-шку, есть такое:

    ...
    /* Run the application. */

    status = SDL_main(argc, argv);

    /* Release the arguments. */

    for (i = 0; i < argc; ++i) {
        SDL_free(argv[i]);
    }

    /* Do not issue an exit or the whole application will terminate instead of just the SDL thread */
    /* exit(status); */

    return status;
    ...

Теперь приложение нормально закрывается при нажатии на кнопку «Назад». Однако после этого оно отказывается запускаться, пока не смахнёшь его из списка недавних приложений.

У меня вроде была похожая проблема. Насколько я помню, помимо выхода из event loop нужно вызывать ещё SDL_Quit() перед return.

Исходная версия EXL, :

В обёртке main в файле src/main/android/SDL_android_main.c, которую ты компилируешь и линкуешь в свою so-шку, есть такое:

    ...
    /* Run the application. */

    status = SDL_main(argc, argv);

    /* Release the arguments. */

    for (i = 0; i < argc; ++i) {
        SDL_free(argv[i]);
    }

    /* Do not issue an exit or the whole application will terminate instead of just the SDL thread */
    /* exit(status); */

    ...

Теперь приложение нормально закрывается при нажатии на кнопку «Назад». Однако после этого оно отказывается запускаться, пока не смахнёшь его из списка недавних приложений.

У меня вроде была похожая проблема. Насколько я помню, помимо выхода из event loop вызывать ещё SDL_Quit().