Android - жизненный цикл мероприятий - PullRequest
2 голосов
/ 24 августа 2011

давайте представим это приложение как вложенное изображение. R обозначает Root-активность, а A и B - другие действия. A - для отображения некоторого списка, B - для отображения деталей некоторого значения. От R я могу получить 4 кнопки для 4 A деятельности. Мой вопрос заключается в том, инициализируется ли в этом сценарии действие A каждый раз, или я бы использовал только одно действие A из всего приложения. Если пользователь выбирает A в правом верхнем углу действия A, то отображает деталь B, а затем из детали B переходит в другой список (но на основе операции A). Будет ли он по-прежнему получать тот же контент от первого A, или он может иметь "новое" действие с другим списком?

В этом суть - скажем, у меня будет сотня активностей. Многие из них являются «формами», отображающими некоторый контент, в приложении будет около 50 вариантов этих форм. Могу ли я сделать для каждой формы одно действие повторно использовать его в своей деятельности, не имея связей с прошлым использованием этого действия?

Activites example

Ответы [ 2 ]

2 голосов
/ 24 августа 2011

По умолчанию действия начинаются заново каждый раз, когда вы открываете их с вызовом startActivity().Если ваша активность запускает новую активность, она по существу будет помещена в стек активности и будет приостановлена ​​во время начала новой активности.Если пользователь нажмет кнопку «Назад», последнее действие в стеке возобновится с момента его остановки (хотя я не думаю, что это гарантировано на 100%, поскольку Android будет убивать задачи, поскольку ему нужны ресурсы, поэтому я бы не стал это предполагать).

Итак, если у вас есть эта цепочка здесь:

A->B->C->D

, где каждая буква представляет новое действие без каких-либо флагов или изменений.

Если пользователь находится на D и нажимает кнопку back, C возобновится.D выскочил из стека.Если пользователь решит снова перейти к операции D, новая D запустится так, как будто этого не произошло (при условии, что вы не сохранили никаких постоянных переменных).Если пользователь нажимает back дважды, приложение будет в B, где C и D не пропали.

Вы можете манипулировать этой цепочкой с помощью различных флагов, таких как singleInstance, чтобы сохранитьсостояние или noHistory, чтобы гарантировать, что оно не будет помещено в стек (то есть оно будет пропущено, если пользователь нажмет back).

Очень подробное описание различных атрибутов

2 голосов
/ 24 августа 2011

Используйте android:launchMode="singleInstance" в своем манифесте, если вы хотите один экземпляр вашего класса активности

...