Запустить приложение Android без основной операции и запустить службу при запуске приложения
У меня есть сценарий в моем приложении. В моем приложении нет пользовательского интерфейса, вместо этого есть Служба, которая запускается при загрузке и будет непрерывно запускаться.
Как настроить файл манифеста без основного действия? Могу ли я запустить приложение без каких-либо действий? И при запуске моего приложения моя Служба должна начать. Это возможно в любом случае?
Я не хочу делать полупрозрачные действия для запуска службы.
Спасибо заранее!
Ответы
Ответ 1
Вы сказали, что не хотите использовать полупрозрачную активность, но это лучший способ сделать это:
- В манифесте установите для темы "Активность" значение
Theme.Translucent.NoTitleBar
.
- Не беспокойтесь о макете своей деятельности и не вызывайте
setContentView()
.
- В вашей деятельности
onCreate()
запустите службу с помощью startService()
.
- Завершите работу с помощью
finish()
после запуска Сервиса.
Другими словами, ваша деятельность не должна быть видимой; он может просто убедиться, что ваша служба запущена, а затем выйдите, что звучит так, как вы хотите.
Я очень рекомендую показать хотя бы уведомление о тосте, указывающее пользователю, что вы запускаете Сервис, или что он уже запущен. Очень плохой пользовательский интерфейс имеет значок запуска, который ничего не делает при нажатии.
Ответ 2
Да, вы можете сделать это, просто создав BroadcastReceiver
, который вызывает ваш Service
при загрузке вашего приложения. Вот полный ответ, данный мной.
Android - запуск службы при загрузке
Если вам не нужна никакая иконка/пусковая установка для приложения Application, вы также можете сделать это, просто не создавайте никаких действий с помощью
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
Просто объявите свой Service
, как обычно объявлено.
Ответ 3
Android Studio версии 2.3
Вы можете создать Сервис без основной деятельности, выполнив несколько простых шагов. Вы сможете установить это приложение через Android Studio и отладить его как обычное приложение.
Сначала создайте проект в Android Studio без активности. Затем создайте свой класс обслуживания и добавьте его в свой AndroidManifest.xml
<application android:allowBackup="true"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<service android:name="com.whatever.myservice.MyService">
<intent-filter>
<action android:name="com.whatever.myservice.MyService" />
</intent-filter>
</service>
</application>
Теперь, в раскрывающемся списке рядом с кнопкой "Запустить" (зеленая стрелка), перейдите к "Редактировать конфигурации", а в "Параметры запуска" выберите "Ничего". Это позволит вам установить вашу службу без Android Studio, жалуясь на отсутствие основной деятельности.
После установки служба НЕ будет запущена, но вы сможете запустить ее с помощью этой команды оболочки adb...
am startservice -n com.whatever.myservice/.MyService
Можно проверить его с помощью...
ps | grep whatever
Я еще не пробовал, но, скорее всего, Android Studio автоматически запустит службу. Это будет сделано в этом меню "Редактировать конфигурации".