Подтвердить что ты не робот

Могу ли я запустить службу из приложения # 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.

4b9b3361

Ответ 1

Да, вы можете запустить службу в onCreate() так, как вы это делаете. Нет гарантии, что услуга будет успешно запущена, хотя, пока служба существует на устройстве и может работать, она будет. super.onCreate() не выполняет никакой подготовки, необходимой для запуска службы из вашего приложения. Что вы подразумеваете под "Доступна ли услуга в состоянии onCreate()"?

Ответ 2

Короче Да, Context.startService(), но в документе также говорится, что если он возвращает null, услуга недоступна.

Если служба запущена или уже запущена, Возвращается имя компонента фактической службы, которая была запущена; еще если служба не существует null возвращается

Этот API не предназначен для разных устройств, поэтому вы можете быть уверены в том, что испытываете на эмуляторе и устройствах, которые у вас есть. Оговорка заключается в том, чтобы помнить, что Сервисы, требующие "лотов" ресурсов, могут действовать по-разному, то есть время или память процессора, и т.д.