#android #activity-stack
#Android #действие-стек
Вопрос:
У меня вопрос. У меня есть представление списка (A) и представление сведений (B).
На B у меня есть кнопка «просмотреть список», которая всегда приведет пользователя к списку. Дело в том, что я могу перейти к B через уведомление и не обязательно от A.
Поэтому при нажатии кнопки B я не могу просто использовать finish(), потому что я мог бы войти из уведомления, поэтому в некоторых случаях мне может потребоваться начать новое действие.
Как мне достоверно определить, пришел ли я из уведомления или из уведомления, чтобы я мог предпринять правильные действия.
В дополнение к этому, это то, о чем я должен беспокоиться? Или это нормально, просто начинать действие каждый раз. В случае, когда я прыгаю между A -> B -> A -> B -> A -> B снова и снова… ни разу не вызывая finish () … это замедлит работу?
Спасибо,
Джерард.
Ответ №1:
Когда вы запускаете действие B с намерением, добавьте extra, а затем проверьте состояние extra в действии B. Вот пример использования строк, хотя вы можете использовать другие типы переменных, такие как boolean или int:
Intent i = new Intent(this, ActivityB.class)
i.putExtra("startedBy", "ActivityA");
Затем в действии B вы можете получить дополнительную переменную с помощью:
Bundle extras = this.getIntent().getExtras();
String startedBy = null;
if (extras != null) {
startedBy = extras.getString("startedBy");
}
Комментарии:
1. Сладко. Таким образом, действие никогда не потеряет своего первоначального намерения? Даже если он проходит через onPause () или onStop () части жизненного цикла?
2. Я не уверен, что вам придется это проверять.
Ответ №2:
Вы можете добавить дополнительный флаг намерения при переходе от A -> B, скажем, логический флаг. Для действия B вы можете по умолчанию присвоить флагу значение false, если оно не содержит дополнительного намерения.