Как освободить ресурсы Android при сбое приложения - PullRequest
2 голосов
/ 24 декабря 2010

Я работаю в приложении Android AudioRecord. Если я не вызову метод release() для объекта AudioRecord в конце сценария, он не будет работать правильно, пока я не перезапущу телефон.

Это становится большой проблемой при работе над этим проектом, потому что, если приложение когда-либо аварийно завершает работу (что иногда случается во время тестирования и возникает непредвиденное переполнение буфера и т. Д.), Тогда мне приходится каждый раз перезагружать телефон.

У меня есть метод для освобождения буферов внутри метода finalize() моего класса AudioListener, и я также называю их onStop() основной операции.

Похоже, что ни один из них не работает, когда приложение зависает или вылетает. Есть ли способ прикрепить действие release к обработчику ошибок или какой-то общий способ гарантировать, что приложение выполнит некоторый код для правильного освобождения ресурсов даже после сбоя.

Спасибо за любую помощь.

1 Ответ

3 голосов
/ 24 декабря 2010

Создайте свой собственный класс Application (необходимо объявить в AndroidManifest.xml), а затем перезапишите методы:

Application.onLowMemory();
Application.onTerminate();

Подробнее об этом можно прочитать в руководствах по Android для Application

...