Кнопка возврата Android с новым намерением или завершением ()

#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, если оно не содержит дополнительного намерения.