В некоторых случаях, когда startActivityForResult действительно не нужен или нецелесообразно изменять все вызовы startActivity для startActivityForResult.
Если нужен простой случай только начала предыдущей операции «снова», Рекомендация: Использовать флаг FLAG_ACTIVITY_CLEAR_TOP.
Если установлено, и запущенная деятельность уже запущена в текущая задача, то вместо запуска нового экземпляра этой активности все остальные действия поверх нее будут закрыты, и этот намерение будет передан в прежнюю деятельность (теперь сверху) как новый Intent.
Например, рассмотрите задачу, состоящую из действий: A, B, C, D. Если D вызывает startActivity () с намерением, который разрешает компонент активности B, то C и D будут завершены и B получит данное намерение, в результате чего стек теперь будет: A, B.
blockquote>Итак, этот пример
// From ActivityD Intent intent = new Intent(getApplicationContext(), ActivityB.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // The flag we wanted intent.putExtra(ActivityB.SOME_EXTRA_THAT_I_NEED_CHANGED, SomeValue); // Example of changing the intent to get something new.. startActivity(intent);
Где вы это получите новое намерение определяется режимом запуска и флагами, где он использовался для запуска (в данном случае нашего ActivityB).
Текущий исполняемый экземпляр действия B в приведенном выше примере либо получит новый вы начинаете здесь в методе onNewIntent () или сами закончите и перезапустите с новым намерением. Если он объявил свой режим запуска «множественным» (по умолчанию), и вы не установили FLAG_ACTIVITY_SINGLE_TOP в одном и том же намерении, он будет завершен и заново создан; для всех других режимов запуска, или если установлен FLAG_ACTIVITY_SINGLE_TOP, этот Intent будет доставлен на текущий экземпляр onNewIntent ().
blockquote>