Android. Убедитесь, что активность активна, прежде чем активировать Intent?

В настоящее время я запускаю Intent для широковещательного приемника, который, в свою очередь, запускает Activity.

Затем из той же службы другое намерение запускается для широковещательного приемника, который находится в действии.

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

Мне было интересно, есть ли способ убедиться, что активность активна, прежде чем отправлять намерение?

Или любое другое решение этого?


person Donal Rafferty    schedule 24.02.2010    source источник
comment
Я думал, что это исправлено, но проблема возникла снова. Есть ли у кого-нибудь пример использования sendOrderedBroadcast? и вернуть данные?   -  person Donal Rafferty    schedule 04.03.2010
comment
это лучший пример sendOrderedBroadcast(), который я нашел... stackoverflow.com /вопросы/2943386/   -  person bigstones    schedule 06.02.2011


Ответы (1)


Почему бы не начать активность, если она еще не жива?

Общий механизм запуска новой активности, если она не запущена, или вывода стека активности на передний план, если она уже запущена в фоновом режиме, — это использование флага NEW_TASK_LAUNCH в вызове startActivity().

Это или просто дать активности возможность начаться до запуска Intent.

В качестве альтернативы вы можете попробовать использовать sendOrderedBroadcast для извлечения данных из трансляции и затем, возможно, повторите попытку.

public abstract void sendOrderedBroadcast (Intent intent, String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)
person Pierre-Antoine LaFayette    schedule 24.02.2010
comment
Я думал, что это исправлено, но проблема возникла снова. Есть ли у кого-нибудь пример использования sendOrderedBroadcast? и вернуть данные? - person Donal Rafferty; 04.03.2010