Возобновите действие вместо запуска, если оно уже существует в обратном стеке

У меня есть Activity_1 после многих шагов, скажем

Activity_2 > Activity_3.... в некоторой Activity_n Я изменяю некоторые данные, относящиеся к Activity_1 и вызываю их с помощью

Intent intent = new Intent(Activity_n.this, Activity_1.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

Обновление содержимого. Но позже я могу вернуться к Activity_1 где я начал, у которого есть старые данные.

Вместо этого я хочу, чтобы начальный Activity_1 's onResume() вызывался, используя вышеуказанный код. Или соответствующий флаг

FLAG_ACTIVITY_CLEAR_TOP

рассмотрите задачу, состоящую из действий: A, B, C, D. Если D вызывает startActivity() с намерением, который разрешает компонент активности B, то C и D будут завершены, а B получит заданное намерение, в результате чего теперь стек состоит из: A, B.

Это то, что говорят документы, но не то, что я получаю.

Ответ 1

Вы можете добавить две строки и попробовать

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

Запишите это в свой файл манифеста внутри Activity

<activity
     android:name=".SettingsActivity"
     android:launchMode="singleInstance"
     android:screenOrientation="portrait" >
</activity>

Действия "singleTask" и "singleInstance" могут только начинать задание. Они всегда находятся в корне стека активности. Кроме того, устройство может удерживать только один экземпляр активности за один раз - только одна такая задача.

Вы можете использовать SingleTask или SingleInstance

"singleTask" - система создает активность в корне новой задачи и перенаправляет ее на нее. Однако, если экземпляр действия уже существует, система перенаправляет намерение на существующий экземпляр посредством вызова его метода onNewIntent(), а не создает новый.

"singleInstance" - То же, что и "singleTask", за исключением того, что система не запускает никаких других действий в задачу, содержащую экземпляр. Деятельность всегда является единственным и единственным членом ее задачи.

См. Эту ссылку http://developer.android.com/guide/topics/manifest/activity-element.html

Ответ 3

Резюме Activity из backstack, если существует или создать новый, если не

android:launchMode="singleTask"

добавьте эту строку в свое приложение AndroidManifest.xml и начните действие с обычного Intent.