Возобновите действие вместо запуска, если оно уже существует в обратном стеке
У меня есть 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
Ответ 2
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
Посетите: http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_REORDER_TO_FRONT
Ответ 3
Резюме Activity
из backstack, если существует или создать новый, если не
android:launchMode="singleTask"
добавьте эту строку в свое приложение AndroidManifest.xml и начните действие с обычного Intent
.