я использую NativeActivty
с native_app_glue для программирования OpenGL
игра для андроид. Трудно определить, когда лучше всего удалять кучи, выделенные объекты и объекты, выделенные OpenGL
,
В НДК NativeActivity
Например, они, кажется, не удаляют объекты после того, как с ними покончили. Прямо сейчас я удаляю свои объекты с двумя функциями удаления: одна для OpenGL
объекты и обычный. Я разделил их, потому что кажется, что только поток обработки событий может удалить OpenGL
объекты. Обычные объекты, которые я выделяю, удаляются обычной функцией удаления.
Когда пользователь нажимает кнопку «Назад» и возвращается в приложение, OpenGL
ресурсы удаляются и приложение вылетает (хотя я думаю, что они должны быть перераспределены APP_CMD_INIT_WINDOW
). Это заставляет меня задуматься, нужно ли мне вообще удалять объекты, потому что, похоже, мне не следует удалять OpenGL
объекты.
Мы должны удалить выделенные объекты кучи с помощью NDK. Я понимаю, что приложения NDK все еще находятся в «песочнице» и имеют JVM
процесс, это занимает машину управления памятью?
РЕДАКТИРОВАТЬ:
Другой случай сбоя моего приложения — это когда объекты удаляются, когда заканчивается состояние игры. Например, переходя от самой игры к меню. После возврата в игру приложение разрушается, хотя объекты перераспределяются. Кажется, это работает только один раз.
Оказывается, что сбой приложения никогда не происходил из-за удаления выделенных объектов кучи или объектов OpenGL. Причиной проблемы были некоторые указатели, которые были удалены, но все еще содержались в векторе. Однако, похоже, нет ничего плохого в удалении объектов с помощью NDK.