2013-03-08 3 views
3

Я изучаю разработку приложений для Android. Я читаю о том, как деятельность управляется системой.Android back stack и Memory reclaim

Прочитав this документацию. Вот путаница.

  1. создать приложение A (из домашнего экрана) с 3-х мероприятий A1, A2, A3 [это Task A]
  2. создать приложение B (из домашнего экрана) с 3 деятельности B1, B2, B3 [ это задача B] , где A1 и B1 являются вершинами стека в приложениях A и B соответственно.

В соответствии с системой документации только выталкивает и выталкивает активность (Нет переназначения, что имеет смысл для стека) Но, он заявляет система может вернуть память в случае недостаточно доступной памяти. И чтобы выбрать, какая деятельность по удалению системы всегда выбирает ту, которая находится в фоновом режиме. Так скажите его удаление активности A3. Но A3 находится в нижней части стека. Как он может удалить A3 без переупорядочить стек для приложения A?

Я надеюсь, что я ясно с моим вопросом

Спасибо,

ответ

1

Спинка стека не изменяется, когда активность удаляется из памяти.

Однако, когда пользователь нажимает кнопку, и возвращается к деятельности, которая была мелиорированных, то любое государство не конкретно сохранить в onSaveInstanceState() (и перезагружать из savedInstanceBundle аргумента в onCreate()) будут потеряны.

+0

ОК, поэтому его вид поддерживает указатель на активность в фоновом стеке и уничтожает активность, но не указатель, так что он может воссоздать его, как только память будет доступна, и пользователь нажмет кнопку возврата. понял. Спасибо! – newbee

0

Система Android не переупорядочить стек, как вы правильно указали. Это следует за Process Lifecycle, где процесс , который содержит активность, прекращается, а не отдельные действия в стеке. И помните, что по умолчанию каждое приложение представляет собой отдельный процесс, в котором сохраняется стек активности. Таким образом, стек активности приложений A и приложения B будет отдельным и независимым.

Например, задача A находится в фоновом режиме с действиями A1, A2 и A3. Задача A - это процесс. Когда андроид должен восстановить память, он завершит процесс Task A, который содержит все действия A1, A2, A3. Поэтому не имеет значения, какая активность находится на вершине стека в задаче A на данный момент.

Смежные вопросы