0

Я использую AlarmManager, чтобы начать обслуживание каждые 1 минуту, чтобы выполнить некоторую фоновое задание.Фоновая работа каждые 1 минуту, сервис, я должен называть `stopSelf()`?

Вот фрагмент кода:

Intent intent = new Intent(context, PostLocationService.class); 
    PendingIntent pendingIntent = PendingIntent.getService(context, POST_LOCATION_REQUEST_CODE, intent, 0); 

    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 

    alarmManager.setInexactRepeating(
      AlarmManager.ELAPSED_REALTIME_WAKEUP, 
      SystemClock.elapsedRealtime() + TEN_SECONDS_INTERVAL, 
      ONE_MINUTE_INTERVAL, pendingIntent); 

PostLocationService расширяет Service. В onStartCommand() Я выполняю определенную работу и звоню stopSelf() после выполнения этой работы.

Но я знаю, что если эта служба все еще работает, в следующий раз при получении намерения onStartCommand() будет выполнен снова, и требуемая работа будет выполнена.

Что является лучшей практикой здесь: начать новый сервис каждые 1 минуту или сохранить один сервис в ожидании намерений?

+0

Я добавил свой ответ, пожалуйста, дайте мне знать, если вы хотите получить дополнительную информацию. –

ответ

0

Используйте IntentService для выполнения быстрых фоновых задач.

IntentService - это базовый класс для служб, которые обрабатывают асинхронные запросы (выраженные как намерения) по запросу. Клиенты отправляют запросы через вызовы startService (Intent); служба запускается по мере необходимости, обрабатывает каждое намерение по очереди с использованием рабочего потока и останавливается, когда заканчивается работа.

+0

Другими словами, ваш голос за прекращение службы после завершения работы? –

 Смежные вопросы

  • Нет связанных вопросов^_^