IntentService, запущенный из BroadcastReceiver, создает экземпляр класса Application? - PullRequest
3 голосов
/ 27 марта 2012

Я пишу некоторый код, который может переносить некоторые постоянные данные устройства на сетевой сервер при изменении маркера регистрации C2DM устройства / приложений.

В конечном итоге это запускается радиовещательным приемником (в частности, получателем, называемымрезультат получения токена регистрации Google C2DM)

@Override
public void onRegistered(Context context, String registrationId) throws IOException {
    Log.d(TAG, "registrationId: " + registrationId);
    Intent selectIntent = new Intent(this, AlertMigrationService.class);
    this.startService(selectIntent);
}

(Примечание. Мое приложение использует пользовательский класс приложения, который расширяет обычный класс приложения.)

Технически я думаю, что этот получатель можно назватькогда мое приложение работает в фоновом режиме (или не работает) - что произойдет, когда моя служба намерений будет запущена?Создает ли это мое целое приложение и создает ли он экземпляр моего класса Application?

Безопасно ли (или даже неплохо) для меня вызывать статические методы в моем классе Application из IntentService?(Эти статические методы имеют возвращаемые объекты, инициализированные в Application.onCreate)

1 Ответ

4 голосов
/ 27 марта 2012

Когда ваш IntentService запускается, он создаст экземпляр вашего класса Application, если ваше приложение не уже запущено.Если ваше приложение живо, вы сможете получить доступ к измененным объектам, специфичным для приложения, как они есть. Но , если ваше приложение было убито, а затем br запускает службу, создается новый экземпляр всего приложения.Статические методы не дадут вам желаемых значений в то время.Сохранять данные где-нибудь и не зависеть от жизненного цикла приложения - вот что я предлагаю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...