Intereting Posts
Java.lang.RuntimeException: Произошла ошибка во время выполнения doInBackground () Как установить Android SDK Build Tools в командной строке? В чем разница между ACTION_SENDTO и ACTION_VIEW при отправке смс? Создание звуковой обработки Маленький Endian SDK с NDK Недавно выпущена «Аутентификация с сервисами Google Play», проблемы с получением токена через GoogleAuthUtil.getToken Мгновенный запуск не будет работать в Android Studio, говорит Gradle Version 2.10. Я использую 2.10 Android-студия автоматически откроет представление документации Java.lang.NullPointerException в файле android.support.v7.widget.RecyclerView.onMeasure Предотвращение закрытия некоторых пользователей Android Цель камеры или галереи уничтожает старую активность на некоторых устройствах OnActivityResult не срабатывает, если режим запуска активности singleInstance Каков правильный порядок вызова методов суперкласса в методах onPause, onStop и onDestroy? и почему? Запрос, если база данных Android существует! Как защитить строку в приложении Android? Медленная модель пакетной рендеринга в libGDX

Служба Android должна работать всегда (никогда не останавливать или останавливать)

Я создал службу и хочу запускать эту службу всегда, пока мой телефон не перезапустится или не закроется. Служба должна работать в фоновом режиме.

Пример кода созданных сервисов и сервисов запуска:

Запустите службу:

Intent service = new Intent(getApplicationContext(), MyService.class); getApplicationContext().startService(service); 

Обслуживание:

 public class MyService extends Service { @Override public int onStartCommand(Intent intent, int flags, int startId) { // TODO do something useful HFLAG = true; //smsHandler.sendEmptyMessageDelayed(DISPLAY_DATA, 1000); return Service.START_NOT_STICKY; } @Override public IBinder onBind(Intent intent) { // TODO for communication return IBinder implementation return null; } } 

Декларация манифеста:

 <service android:name=".MyService" android:icon="@drawable/ic_launcher" android:label="@string/app_name" > </service> 

Можно ли запускать эту службу всегда, когда приложение приостанавливается и что-то еще. Через некоторое время мое приложение переходит в режим паузы, и службы также останавливаются или останавливаются. Итак, как я могу запустить эту службу в фоновом режиме и всегда.

Solutions Collecting From Web of "Служба Android должна работать всегда (никогда не останавливать или останавливать)"

«Можно ли всегда запускать эту службу, как когда приложение приостанавливается и что-то еще?»

Да.

  1. В сервисе onStartCommand метод возвращает START_STICKY.

     public int onStartCommand(Intent intent, int flags, int startId) { return START_STICKY; } 
  2. Запустите службу в фоновом режиме, используя startService (MyService), чтобы он всегда оставался активным независимо от количества связанных клиентов.

     Intent intent = new Intent(this, PowerMeterService.class); startService(intent); 
  3. Создайте связующее.

     public class MyBinder extends Binder { public MyService getService() { return MyService.this; } } 
  4. Определите соединение службы.

     private ServiceConnection m_serviceConnection = new ServiceConnection() { public void onServiceConnected(ComponentName className, IBinder service) { m_service = ((MyService.MyBinder)service).getService(); } public void onServiceDisconnected(ComponentName className) { m_service = null; } }; 
  5. Привяжите к службе с помощью bindService.

      Intent intent = new Intent(this, MyService.class); bindService(intent, m_serviceConnection, BIND_AUTO_CREATE); 
  6. Для вашего обслуживания вам может потребоваться уведомление о запуске соответствующей деятельности после ее закрытия.

     private void addNotification() { // create the notification Notification.Builder m_notificationBuilder = new Notification.Builder(this) .setContentTitle(getText(R.string.service_name)) .setContentText(getResources().getText(R.string.service_status_monitor)) .setSmallIcon(R.drawable.notification_small_icon); // create the pending intent and add to the notification Intent intent = new Intent(this, MyService.class); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0); m_notificationBuilder.setContentIntent(pendingIntent); // send the notification m_notificationManager.notify(NOTIFICATION_ID, m_notificationBuilder.build()); } 
  7. Вам нужно изменить манифест, чтобы запустить действие в режиме одного верхнего уровня.

      android:launchMode="singleTop" 
  8. Обратите внимание, что если системе нужны ресурсы, и ваш сервис не очень активен, он может быть убит. Если это неприемлемо, принесите сервис на передний план, используя startForeground.

      startForeground(NOTIFICATION_ID, m_notificationBuilder.build()); 

Чтобы запустить службу в своем собственном процессе, вы должны указать следующее в объявлении xml.

 <service android:name="WordService" android:process=":my_process" android:icon="@drawable/icon" android:label="@string/service_name" > </service> 

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

http://www.vogella.com/articles/AndroidServices/article.html

Надеюсь это поможет

Вы можете реализовать startForeground для службы, и даже если она умрет, вы можете перезапустить ее, используя START_STICKY в startCommand() . Не уверен, хотя это правильная реализация.

Простым решением является перезапуск службы, когда система ее останавливает.

Я нашел эту очень простую реализацию этого метода:

Как отключить службу Android

Если у вас уже есть служба и вы хотите, чтобы она работала все время, вам нужно добавить 2 вещи:

  1. В самом сервисе:

     public int onStartCommand(Intent intent, int flags, int startId) { return START_STICKY; } 
  2. В манифесте:

     android:launchMode="singleTop" 

Не нужно добавлять привязку, если она вам не нужна.

Я нашел простой и понятный способ поддерживать Service всегда.

Этот парень объяснил это так ясно и использовал хороший алгоритм. Его подход заключается в отправке широковещательной передачи, когда служба собирается убить, а затем использовать ее для перезапуска службы.

Вы должны проверить это: http://fabcirablog.weebly.com/blog/creating-a-never-ending-background-service-in-android