Требуется управление памятью NativeActivity для Android NDK?

я использую NativeActivty с native_app_glue для программирования OpenGL игра для андроид. Трудно определить, когда лучше всего удалять кучи, выделенные объекты и объекты, выделенные OpenGL,

В НДК NativeActivity Например, они, кажется, не удаляют объекты после того, как с ними покончили. Прямо сейчас я удаляю свои объекты с двумя функциями удаления: одна для OpenGL объекты и обычный. Я разделил их, потому что кажется, что только поток обработки событий может удалить OpenGL объекты. Обычные объекты, которые я выделяю, удаляются обычной функцией удаления.

Когда пользователь нажимает кнопку «Назад» и возвращается в приложение, OpenGL ресурсы удаляются и приложение вылетает (хотя я думаю, что они должны быть перераспределены APP_CMD_INIT_WINDOW). Это заставляет меня задуматься, нужно ли мне вообще удалять объекты, потому что, похоже, мне не следует удалять OpenGL объекты.

Мы должны удалить выделенные объекты кучи с помощью NDK. Я понимаю, что приложения NDK все еще находятся в «песочнице» и имеют JVM процесс, это занимает машину управления памятью?

РЕДАКТИРОВАТЬ:
Другой случай сбоя моего приложения — это когда объекты удаляются, когда заканчивается состояние игры. Например, переходя от самой игры к меню. После возврата в игру приложение разрушается, хотя объекты перераспределяются. Кажется, это работает только один раз.

1

Решение

Оказывается, что сбой приложения никогда не происходил из-за удаления выделенных объектов кучи или объектов OpenGL. Причиной проблемы были некоторые указатели, которые были удалены, но все еще содержались в векторе. Однако, похоже, нет ничего плохого в удалении объектов с помощью NDK.

1

Другие решения


По вопросам рекламы [email protected]