Отличие объекта Application от Activity и BroadcastReceiver на Android

У меня есть приложение, которое использует push-уведомления для обновления пользователей о событиях, происходящих в сети. Для этого у меня есть обычная активность, которая отображает игру пользователю, а затем BroadcastReceiver, который существует для обработки входящих push-сообщений.

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

Я также попытался перенести обработку и логику в Activity.onCreate(), но весь этот жизненный цикл гораздо менее предсказуем, чем у приложения, поэтому метод приложения кажется предпочтительным, но я открыт для альтернативных решений.

Как определить, создается ли экземпляр приложения для BroadcastReceiver или Activity?


person RealCasually    schedule 28.11.2011    source источник
comment
Некоторая дополнительная информация — вот документация Urban Airship для этой области: urbanairship .com/docs/   -  person RealCasually    schedule 28.11.2011
comment
Теперь, когда я думаю об этом, я не уверен, что служба вообще требуется, поскольку Android должен иметь службу C2DM, работающую самостоятельно. В этом случае я бы полагался только на свои BroadcastReceivers. Однако это все еще проблематично, поскольку я считаю, что объект Application создается каждый раз, когда создается экземпляр BroadcastReceiver.   -  person RealCasually    schedule 29.11.2011


Ответы (1)


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

person RealCasually    schedule 29.11.2011