Как запустить Android-сервис при запуске приложения?

Я все еще новичок в Android, и я думаю, что нижеприведенная конфигурация работает для запуска моего сервиса при запуске приложения.

<service android:name=".PlaylistUpdaterService"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </service> 

Но это не так. Что я упустил?

Solutions Collecting From Web of "Как запустить Android-сервис при запуске приложения?"

Исправьте меня, если я ошибаюсь, но android.intent.category.LAUNCHER действителен только для Activity. Таким образом, это не похоже на правильный способ запуска службы. То же самое можно добиться, если вы выполните следующее:

  • Создавать прозрачные действия, которые будут использоваться только для запуска службы
  • Для этого действия вам не нужно указывать макет графического интерфейса. Таким образом, вам не нужно устанавливатьContentView () в onCreate () операции. Единственное, что вам нужно, это положить

@android: стиль / Theme.NoDisplay

В разделе Тема для этой операции в AndroidManifest.xml.

  • Запустите службу из onCreate() вашей деятельности.
  • Call finish() в onStart() вашей активности, чтобы закрыть его.

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

Неправильно! onCreate() класс Application (IE сделайте свой собственный), затем в onCreate() сделайте это.

 //Service is below Intent serviceIntent = new Intent(getApplicationContext(), PlaylistUpdaterService.class); startService(serviceIntent); 

И возьмите это дерьмо фильтра цели из вашего объявления в файле манифеста. Оставьте это как

 <service android:name=".PlaylistUpdaterService"> 

Фильтр намерений должен быть только в вашей домашней деятельности

 <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> 

Причина, по которой вы это делаете, – это то, что класс Application запускается сразу после приложения и действует как вид глобального класса, которым управляет инфраструктура android.

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