Ответ
Да, любую Activity можно убить из памяти, так как она управляется системой Android. Система может уничтожить Activity при нехватке ресурсов, даже если она находится в стеке (например, в onStop() или onDestroy()).
Как убить явно:
finish() // Завершает текущую Activity
// Или через Intent.FLAG_ACTIVITY_CLEAR_TASK и т.д.
Важно:
- После уничтожения состояние
Activityтеряется, если не сохранено вonSaveInstanceState(). - Нельзя убить только
Activity, которая является корневой в процессе (но система может завершить весь процесс). - Явный вызов
finish()не гарантирует мгновенное освобождение памяти — это лишь запрос на завершение.
Ответ 18+ 🔞
Э, слушай, вот реально интересный момент, который многих вводит в ступор. Ты думаешь, твоя Activity — это неприкосновенный дворец в памяти? Как бы не так, ёпта.
Система Android — она хитрая жопа. Ей плевать на твои красивые интерфейсы. Если ей станет тесно, если память на исходе, она возьмёт и накроет твою активити медным тазом, даже если она тихонько себе в стеке задремала в onStop(). Просто выкинет её из памяти, как ненужный хлам. Без спроса. Вот такое доверие, ебать ноль.
Ну а если ты сам хочешь стать палачом? Легко, блядь.
finish() // Всё, приехали. Точка. Занавес.
// Или там через Intent.FLAG_ACTIVITY_CLEAR_TASK всякие флаги подключай
Вызвал finish() — и всё, отправил активити в лучший из миров. Но запомни, чувак, три важных вещи, а то потом будешь охуевать:
- Всё пропало. Как только система её прибила или ты сам
finish()нажал, состояние интерфейса — поля, скроллы, чекбоксы — всё это летит в пизду. Если не успел заранее, вonSaveInstanceState(), всё похерить вBundle, то прощай, данные. Пользователь вернётся — а ему с чистого листа начинать. Удивление пиздец будет. - Не всё так просто с корневой. Ту активити, с которой всё начиналось (лаунчерную, грубо говоря), так просто прикончить не выйдет. Ты её одну не убьёшь. Но система-то может! Она запросто может взять и грохнуть весь процесс целиком, со всеми активити внутри. Вот такой вот жёсткий ресет.
finish()— это не магия. Это не волшебная палочка, которая мгновенно испаряет байты из оперативки. Это просто вежливая (или не очень) просьба к системе: «Эй, давай закругляйся». А система уже сама решит, когда именно поставить точку. Так что не жди, что память очистится в ту же наносекунду.
Короче, суть в чём: активити — это не крепость, а временная палатка. Система или ты сам можете её свернуть в любой момент. Главное — не забывай вовремя свои вещички (состояние) в рюкзак (Bundle) складывать, а то останешься на морозе с голой жопой.