Android - Убедитесь, что активность активна, прежде чем запускать Intent?
-
22-09-2019 - |
Вопрос
В данный момент я передаю намерение широковещательному приемнику, который, в свою очередь, запускает Действие.
Затем из той же службы другое намерение передается Широковещательному приемнику, который участвует в этом Действии.
Проблема в том, что Действие не получает предназначенного для него Намерения, потому что оно запускается до того, как оно активировано и широковещательный приемник зарегистрирован.
Мне было интересно, есть ли способ убедиться, что Действие активировано, прежде чем отправлять намерение?
Или какое-либо другое решение этой проблемы?
Решение
Почему бы не начать это занятие, если оно еще не запущено?
Общий механизм для запуска нового действия, если оно не запущено - или для вывода стека действий на передний план если оно уже запущено в фоновом режиме — заключается в использовании Флаг NEW_TASK_LAUNCH в вызове startActivity().
Это или просто дайте действию шанс начаться, прежде чем запускать Намерение.
В качестве альтернативы вы могли бы попробовать использовать Отправка заказанной широковещательной передачи чтобы получить данные обратно из широковещательной передачи, а затем, возможно, повторить попытку.
public abstract void sendOrderedBroadcast (Intent intent, String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)