Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
AndroidProg
3 / 3 / 1
Регистрация: 21.10.2012
Сообщений: 58
1

Не вызывается onDestroy при принудительно остановке приложения

29.09.2013, 11:58. Просмотров 1144. Ответов 2
Метки нет (Все метки)

Есть приложение с использованием нативной библиотеки.
В onCreate вызывается метод инициализации этой библиотеки(выделяется память и тд.)
В onDestroy вызывается метод в котором освобождается выделенная память.

Java
1
2
3
4
5
6
    @Override
    public void onDestroy()
    {
        super.onDestroy();
        k.DeInit();   //Нативные метод, в нём освобождается выделенная память.
    }
Так вот при нажатии кнопки "Назад", onDestroy отлично срабатывает, память освобождается.

А если свернуть приложение и закрыть (Настройки->Приложения->MyApp->Остановить или по долгому нажатию кнопки "На главный экран") то onDestroy не срабатывает.

Вопрос, при принудительной остановке приложения выделенная в нативе память освобождается автоматически?
Если нет, то как тут быть?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2013, 11:58
Ответы с готовыми решениями:

Как отловить остановку приложения, если не срабатывает onDestroy
Иногда, например, если войти в меню последних запущенных приложений и нажать...

Оптимизация приложения. Слишком часто вызывается GC
Требуются некоторые разъяснения по работе GC и некоторая помощь в оптимизации....

Не отрабатывает onDestroy()
Всем привет, как то я подымал подобный вопрос, но не спрашивал как это можно...

OnStop и onDestroy в активити
Если внутри активити происходит утечка памяти то оно упадет с OutofMemory и при...

Service onDestroy и System.exit(0);
Добрый день. Объясните, пожалуйста, такой нюанс: @Override ...

2
Netscape
374 / 361 / 52
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
29.09.2013, 13:36 2
Ну, при "Force stop" onDestroy точно не вызовется, поскольку ос посылает killProcess.
Получается, что вся выделенная память для процесса освобождается, независимо от того где и как она была выделена.
1
AndroidProg
3 / 3 / 1
Регистрация: 21.10.2012
Сообщений: 58
29.09.2013, 14:01  [ТС] 3
Отлично, спасибо.
Есть ещё один вопрос, уже спрашивал но толком не разобрался.
Если активити остановлено, то есть был вызван onStop но не был вызван onDestroy, все данные сохраняются - объекты, переменные и тд. Но почему не сохраняются загруженные текстуры OpenGL?
При разворачивании приложения текстуры все белые.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2013, 14:01

Вызов onDestroy() без вызовов onPause() и onStop()
наткнулся на вопрос в одном тесте "Последний метод, вызываемый в жизненном...

Как использовать onDestroy() если есть несколько активити
Добрый день. В приложении несколько активити. В главной есть метод onDestroy()...

Ищу программу, которая может принудительно закрывать определенные приложения при блокировке экрана (есть ROOT)
Такие программы, как Сервисы Google Play и Аккаунты Google жрут дофига батареи...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru