2012-03-27 2 views
3

Я пишу код, который может переносить некоторые сохраненные на устройстве данные на сетевой сервер, когда токен регистрации приложений/приложений C2DM изменяется.Началось ли IntentService с создания BroadcastReceiver экземпляра класса Application?

Это, в конечном счете стартовал на BroadcastReceiver (в частности, приемник называется в результате получения регистрационных маркеров 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?

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

ответ

4

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

Смежные вопросы