Можно ли выстрелить один раз несколько раз? - PullRequest
1 голос
/ 21 сентября 2011

У меня есть служба, которая выполняет вызовы из базы данных.Служба получает запрос с намерением, и, когда вызов базы данных завершен, она передает намерение «обновление завершено», указывающее завершение вызова.

Иногда база данных уже заполнена кэшированными данными, в которыхВ этом случае я хотел бы немедленно передать намерение «обновление завершено», указывающее, что действие должно отображать кэшированные данные, а затем, как только база данных была обновлена, запустить другое намерение «обновление завершено», указывающее, что действие должно загрузить обновленные данные.

Проблема в том, что вторая трансляция никогда не принимается активностью.Это потому, что я повторно использую тот же объект намерения, который уже был запущен?

Вот код:

if (scheduleDatabase.populated()) {
    intent.putExtra("fromCache", true);
    getApplicationContext().sendBroadcast(intent);
}

scheduleDatabase.update();
intent.putExtra("fromCache", false);
getApplicationContext().sendBroadcast(intent);

Обновление: если я закомментирую одно из сообщений о намеренияхдругой всегда срабатывает и принимается.Кроме того, если я создаю два объекта намерения с одинаковой строкой действия и запускаю их отдельно, только первый из них когда-либо будет получен действием.Мне пока не ясно, уволен ли другой, но не получен, или он вообще не срабатывает.

Ответы [ 2 ]

2 голосов
/ 22 сентября 2011

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

0 голосов
/ 21 сентября 2011

Я столкнулся с подобной проблемой.Да, второе намерение перезаписывает первое.Моим обходным решением было создание нового намерения в моем BroadcastReceiver.У вас есть доступ к тому же контексту, и вы можете передавать данные в дополнениях.

...