Обратный вызов Activity в нижней части стека из глобальной Activity - PullRequest
0 голосов
/ 23 марта 2011

Я уже знаю, что могу передавать Bundled-данные через setResult из одного действия в другое.Однако предположим, что у меня есть глобальное действие, которое можно запустить из любого места в моем приложении, поскольку оно сопоставлено с кнопкой, которая отображается в строке заголовка почти во всех моих действиях.

Короче говоря, после того, как он завершит свой управляемый пользователем процесс, я хочу, чтобы он возвратил сигнал к самому первому действию в заднем стеке, в основном к моему домашнему действию, чтобы соответствующим образом обновлять пользовательский интерфейс.

Часть проблемы заключается в том, что, если я использую BroadcastReceiver, он не регистрируется, когда моя деятельность находится в фоновом режиме, и он не получит сигнал для обновления своего набора данных.

Что я хочудостичь следующего:

Из Домашнего (ActivityA) или любого другого действия (Activity B, C и т. д.), который может открыть мою глобальную активность (ActivityX), он должен найти способперезвонить в ActivityA, не выводя его на передний план.

Должен ли я использовать FLAG_ACTIVITY_FORWARD_RESULT и, если да, то как мне смоделировать его из моих последующих действий после Home.Другими словами, если я запускаю дочернее действие из Home, должен ли я запускать его с помощью startActivityForResult с любым кодом запроса, который я определяю, а затем передавать FLAG_ACTIVITY_FORWARD_RESULT при открытии моего глобального действия, чтобы оттуда был установлен результат?

Кроме того, предположим, что я запускаю дочернее действие из дома с результатом, а затем из своего дочернего действия я добавляю больше в стек, из которого я открываю ActivityX.Будет ли система все еще помнить цепочку результатов, пока я открываю первого потомка из Home с результатом?

РЕДАКТИРОВАТЬ: Я не хочу просто сразу очистить весь стек обратно домой.после завершения процесса в ActivityX;просто способ сообщить об активности Home, чтобы обновить ее интерфейс, когда пользователь в конечном итоге возвращается на главный экран.Я предполагаю, вероятно, установление флага SharedPreference, который Home проверяет в onStart, когда пользователь переориентируется на это действие, что, в свою очередь, дает мне условие для выполнения конечного результата, после чего флаг сбрасывается.

1 Ответ

1 голос
/ 23 марта 2011

Ваш домашний экран должен просто обновить свой пользовательский интерфейс в onResume, таким образом, всякий раз, когда пользователь возвращается к нему, будут отображаться последние данные. Нет необходимости передавать обратные вызовы. В противном случае вы можете зарегистрировать приемник Broadcast в onCreate (и отменить регистрацию в onDestroy ... не идеально) в своей домашней активности, а затем отправить широковещательную рассылку, когда вы хотите обновить домашнюю активность (хотя домашняя активность на самом деле не должна обновляться). сам, пока не возобновится).

Вот как можно вернуться к домашнему занятию:

Intent goHome = new Intent(getContext(), HomeActivity.class);
goHome.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
goHome.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(goHome);

FLAG_ACTIVITY_CLEAR_TOP: Это гарантирует, что при запуске действия отображается его начальное действие.

FLAG_ACTIVITY_NEW_TASK: мы запускаем новое задание (т. Е. Кнопка «Назад» не должна возвращаться к предыдущему экрану, чтобы при нажатии кнопки «Назад» на главном экране выходило из приложения).

Я сообщу об отдыхе завтра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...