Android: удаление / уничтожение объектов при повороте экрана - PullRequest
3 голосов
/ 25 января 2010

Я обнаружил, что производительность ухудшается после одного или нескольких поворотов экрана, и я предполагаю, что это, вероятно, связано с тем, что основное действие приложения разрушается и воссоздается каждый раз при повороте экрана, и что мое приложение должно терять память случается.

Я читал, что, вопреки тому, что можно было ожидать, не все объекты, созданные основным действием приложения (или в классах, вызываемых этим действием), уничтожаются при разрушении действия. В частности, я думаю, что я прочитал (хотя сейчас не могу найти где), что если представление использует большой объект-член растрового изображения, то метод onDestroy () класса Activity должен быть переопределен, а растровое изображение должно быть явно переработано.

Существуют ли другие объекты, которые должны быть уничтожены или удалены при уничтожении Действия? Что насчет слушателей? Существует ли всеобъемлющий учебник или руководство по этому предмету?

Ответы [ 2 ]

5 голосов
/ 25 января 2010

Есть ли всеобъемлющий учебник или руководство по этому вопросу?

Не совсем.

Есть ли другие объекты, которые нужно быть уничтожены или удалены, когда Деятельность разрушена? Как насчет Слушатели?

Битовые карты необычны, отчасти потому, что они используют память вне кучи 16 МБ, если я правильно понимаю византийскую модель памяти Android.

Помимо больших растровых изображений, самое большое, о чем вам действительно нужно беспокоиться, это то, что мешает нормальной работе сборки мусора. Все, что прямо или косвенно связано с действием из статического контекста, предотвратит сбор мусора. Примеры включают в себя:

  • члены-статические данные в классах (например, вы настраиваете свою собственную структуру слушателя с помощью одного из ваших сервисов, поэтому ваш сервис удерживает слушателя, который удерживает вашу активность)
  • потоков (например, вы вручную разветвляете фоновый поток и не прерываете его)
1 голос
/ 27 марта 2011

Обратите внимание, что включение android:configChanges="orientation" в Манифест предотвращает разрушение Действия при повороте экрана. Поэтому мне больше не нужно беспокоиться о том, нужно ли мне уничтожать или удалять отдельные растровые изображения или другие объекты! (Спасибо Рибо за то, что он указал на это в другой теме.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...