Android-запуск службы во время загрузки

Мне нужно запустить сервис во время загрузки. Я много искал. Они говорят о Broadcastreceiver. Поскольку я новичок в разработке Android, я не получил четкой картины об услугах на Android. Укажите исходный код.

Создайте BroadcastReceiver и зарегистрируйте его для получения ACTION_BOOT_COMPLETED . Вам также необходимо разрешение RECEIVE_BOOT_COMPLETED .

Чтение: прослушивание и широковещание глобальных сообщений и настройка сигналов тревоги

Ваш приемник:

 public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Intent myIntent = new Intent(context, YourService.class); context.startService(myIntent); } } 

Ваш AndroidManifest.xml:

                    ?                    

Вы можете зарегистрировать свою собственную службу приложений для автоматического запуска, когда устройство было загружено. Вам это нужно, например, когда вы хотите получать push-события с http-сервера и хотите сообщить пользователю, как только произойдет новое событие. Пользователю не нужно запускать действие вручную до начала работы службы …

Это довольно просто. Сначала дайте своему приложению разрешение RECEIVE_BOOT_COMPLETED. Затем вам нужно зарегистрировать BroadcastReveiver. Мы называем это BootCompletedIntentReceiver.

Теперь ваш Manifest.xml должен выглядеть так:

            

В качестве последнего шага вам необходимо реализовать приемник. Этот приемник только начинает ваш фоновый сервис.

 package com.jjoe64; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.preference.PreferenceManager; import com.jjoe64.BackgroundService; public class BootCompletedIntentReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) { Intent pushIntent = new Intent(context, BackgroundService.class); context.startService(pushIntent); } } } 

С http://www.jjoe64.com/2011/06/autostart-service-on-device-boot.html

В большинстве решений, размещенных здесь, отсутствует важная часть: выполнение этого без блокировки следа приводит к риску того, что ваша Служба будет убита до того, как она будет завершена. Увидел это решение в другом streamе, отвечая здесь также.

Сначала вам необходимо установить блокировку слежения. К счастью, библиотека поддержки дает нам class для этого:

 public class SimpleWakefulReceiver extends WakefulBroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // This is the Intent to deliver to our service. Intent service = new Intent(context, SimpleWakefulService.class); // Start the service, keeping the device awake while it is launching. Log.i("SimpleWakefulReceiver", "Starting service @ " + SystemClock.elapsedRealtime()); startWakefulService(context, service); } } 

то в своей службе убедитесь, что вы освободили блокировку слежения:

  @Override protected void onHandleIntent(Intent intent) { // At this point SimpleWakefulReceiver is still holding a wake lock // for us. We can do whatever we need to here and then tell it that // it can release the wakelock. ... Log.i("SimpleWakefulReceiver", "Completed service @ " + SystemClock.elapsedRealtime()); SimpleWakefulReceiver.completeWakefulIntent(intent); } 

Не забудьте добавить разрешение WAKE_LOCK и зарегистрировать получателя в манифесте:

   ...      

вы должны зарегистрироваться для BOOT_COMPLETE, а также REBOOT

       

Также зарегистрируйте свою созданную службу в манифесте и используйте-разрешить как

         

а затем в лифчике-приемнике звоните в службу поддержки

 public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Intent myIntent = new Intent(context, MyService.class); context.startService(myIntent); } } 

Сначала зарегистрируйте получателя в файле manifest.xml:

        

а затем записать трансляцию для этого приемника, например:

 public class Broadcast_PowerUp extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(Intent.ACTION_POWER_CONNECTED)) { Toast.makeText(context, "Service_PowerUp Started", Toast.LENGTH_LONG).show(); } else if (action.equals(Intent.ACTION_POWER_DISCONNECTED)) { Toast.makeText(context, "Service_PowerUp Stoped", Toast.LENGTH_LONG) .show(); } } } 
  • Скрыть панель уведомлений
  • Как вы используете Android Volley API?
  • Android-зал для обработки перенаправления
  • изображение прикрепление к почте .. как в android?
  • Как начать работу в адаптере?
  • Как обращаться с ListView на Android
  • Android N требует, чтобы IDE работала с Java 1.8 или новее?
  • Как заставить моргнуть текстовое изображение
  • Можно ли использовать AsyncTask в classе Service?
  • Marsmallow: изменение разрешений при запуске приложения
  • BitmapFactory OOM заставляет меня гайки
  • Interesting Posts

    Как увеличить размер шрифта в Android Studio?

    Как можно установить операционную систему при отсутствии средств установки?

    Сервлет перенаправляет на ту же страницу сообщение об ошибке

    clone (): ArrayList.clone () Я думал, что мелкая копия

    Извлечение большого блоба из базы данных Android sqlite

    Строка проводника Windows над командной строкой

    Как сравнить основные каркасы C # DI / IoC?

    Как вызвать одно приложение для Android из другого приложения для Android

    Убедитесь, что приложение не работает в течение определенного периода времени и блокирует его

    Плотность2d Участок с использованием другой переменной для заполнения (аналогично geom_tile)?

    API JavaMail для iMail – java.net.SocketException: Permission denied: connect

    Загрузка файла вместе с другим объектом на веб-сервисе в Джерси.

    Можно ли создавать стандартные шаблоны контейнеров с неполными типами?

    Когда rm удаляет открытые файлы?

    Как добавить глобальные фильтры ASPI Web Api?

    Давайте будем гением компьютера.