Могу ли я запустить службу из приложения # onCreate()?
Я хочу запустить службу, когда мое приложение инициализируется из любого компонента.
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
startService(new Intent(getApplicationContext(), MyService.class));
}
}
Доступна ли служба в состоянии onCreate()
? Будет ли super.onCreate()
инициализировать все компоненты приложения, зарегистрированные в AndroidManifest.xml?
Я могу запустить этот код в своих галактиках, но я не могу убедиться, что он будет запущен на всех устройствах и платформах, я не могу найти документацию об инициализации Android APP.
Ответы
Ответ 1
Да, вы можете запустить службу в onCreate()
так, как вы это делаете. Нет гарантии, что услуга будет успешно запущена, хотя, пока служба существует на устройстве и может работать, она будет. super.onCreate()
не выполняет никакой подготовки, необходимой для запуска службы из вашего приложения. Что вы подразумеваете под "Доступна ли услуга в состоянии onCreate()"?
Ответ 2
Короче Да, Context.startService(), но в документе также говорится, что если он возвращает null, услуга недоступна.
Если служба запущена или уже запущена, Возвращается имя компонента фактической службы, которая была запущена; еще если служба не существует null возвращается
Этот API не предназначен для разных устройств, поэтому вы можете быть уверены в том, что испытываете на эмуляторе и устройствах, которые у вас есть. Оговорка заключается в том, чтобы помнить, что Сервисы, требующие "лотов" ресурсов, могут действовать по-разному, то есть время или память процессора, и т.д.