Я получаю ошибку OutofMemoryError для моего приложения для Android, и я немного запутался в том, что происходит. По сути, я могу запустить его первые несколько раз, но когда я пытаюсь выйти из него, а затем открыть его снова быстро и многократно, я получаю ошибку нехватки памяти.
Я попытался исследовать эту тему и обнаружил, что метод recycle () обычно является проблемой. Тем не менее, я вызвал метод recycle для каждого из растровых изображений (которые хранятся в контейнере объектов, хранятся в массиве), но проблема все еще возникала.
После этого я попытался с помощью Eclipse Memory Analyzer посмотреть на дампы кучи, когда натолкнулся на что-то странное. После выхода из действия (обратно в действие средства запуска, а затем снова открывая действие с помощью кнопки, я сделал снимки экрана дампа кучи с помощью анализатора памяти. Оказывается, каждый раз, когда я выходил и снова вводил Activity, был создан другой экземпляр объекта Activity, а старые не были освобождены, даже несмотря на то, что вызывался метод onDestroy (), который также имел код recycle / cleanup.
Затем я попытался переопределить метод finalize, чтобы посмотреть, вызывается ли он, когда действие выходит обратно в действие средства запуска, но не вызывается. Я читал в некоторых других потоках stackoverflow, что finalize () вызывается не всегда, поэтому, в конце концов, я все еще не уверен, что происходит.
В конечном счете, мой вопрос таков:
Как я должен обеспечить, чтобы объект Activity (сам объект действия, а не материал, созданный из действия) был выпущен после выхода из действия в другое действие?