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

Запустить приложение Android без основной операции и запустить службу при запуске приложения

У меня есть сценарий в моем приложении. В моем приложении нет пользовательского интерфейса, вместо этого есть Служба, которая запускается при загрузке и будет непрерывно запускаться.

Как настроить файл манифеста без основного действия? Могу ли я запустить приложение без каких-либо действий? И при запуске моего приложения моя Служба должна начать. Это возможно в любом случае? Я не хочу делать полупрозрачные действия для запуска службы.

Спасибо заранее!

4b9b3361

Ответ 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 автоматически запустит службу. Это будет сделано в этом меню "Редактировать конфигурации".