В жизненном цикле активности Android есть одна вещь, которую я не понимаю. Когда действие воссоздается (например, когда я поворачиваю экран), все его экземпляры уничтожаются, поэтому я должен позаботиться о сохранении данных, которые мне нужно сохранить. Но что произойдет, если у меня есть статический класс, который заполнен данными и доступен из этого Activity. Когда действие будет уничтожено, эти данные будут потеряны или нет? Поскольку класс статичен, создавать его экземпляр не нужно.

3
gorgi93 14 Авг 2014 в 16:20

1 ответ

Лучший ответ

Действительно, класс статических данных не будет ни воссоздан, ни уничтожен. Чего вам абсолютно следует избегать, так это объявления ваших данных во внутреннем статическом классе вашей деятельности. Это вызовет утечку памяти, потому что статический класс будет ссылаться на вашу активность, поэтому сборщик мусора не сможет очистить старую активность в памяти, что приведет к увеличению вашей кучи при каждом повороте приложения. Но если ваш статический класс находится за пределами вашей деятельности, это не должно быть проблемой!

Здесь вы найдете ценный видеоролик об управлении памятью в Android. Даже если он немного устарел, он поможет вам понять, как работает сборщик мусора в Android!

1
Chris 14 Авг 2014 в 16:29
У меня нет внутреннего статического класса. Так что я свободен от зомби :) thx;)
 – 
gorgi93
14 Авг 2014 в 16:37
2
Также будьте очень осторожны, чтобы не хранить ссылку на какой-либо объект в контексте Activity в статическом классе - например, Сам контекст, растровые изображения, представления и т. Д.
 – 
Simon
14 Авг 2014 в 17:20