Запуск асинтаксы из широковещательного приемника

Я хочу знать, если запуск асинтезы из широковещательного приемника считается плохой практикой? Я в основном зарегистрирован на сервере C2DM google, а затем, когда я перехватываю зарегистрированный, широковещательный приемник, я хочу отправить его на свой сервер.

Каков наилучший способ сделать это?

Да, это считается плохой практикой. Это связано с тем, что если вы запускаете AsyncTask из BroadcastReceiver Android может убить ваш процесс, если onReceive() возвращен, и нет активных активных компонентов.

Правильный способ – запустить Service из BroadcastReceiver . И эта Service должна управлять AsyncTask . Таким образом, Android будет знать об активном компоненте, и Android не убьет его преждевременно (если не возникнут другие критические условия, например, недостаточно памяти).

Начиная с Honeycomb, вы можете вызвать goAsync () , а затем у вас есть 10 секунд или около того, чтобы выполнить вашу работу асинхронно.

Пример использования может быть показан здесь .