Android долго работает сервис без уведомления - PullRequest
2 голосов
/ 26 сентября 2011

Я вижу этот пример с такими программами, как Advance Task killer, Watch Dog, eBay, виджеты батареи и т. Д.Работает фоновая служба, которая отслеживает активность устройства, широковещательный приемник, но есть возможность отключить отображаемый значок уведомления.В настоящее время мое приложение работает безупречно, набрав:

Context context = getApplicationContext();
Intent intent = new Intent(context, SomeBackGroundService.class);
context.startService(intent) 

, а затем в своем сервисе я звоню:

startForeground(NOTIFICATION_ID, notification);

Теперь, как эти другие приложения могут иметь запущенный вещательный приемник?без значка уведомления?Что мне нужно сделать, чтобы отключить / настроить ect, чтобы скрыть значок и добавить эту функцию в мое приложение?

Заранее спасибо

Ответы [ 3 ]

5 голосов
/ 13 сентября 2012

Я не эксперт в этом, но я не согласен с принятым ответом.

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

0 голосов
/ 25 апреля 2013

Создайте уведомление, содержащее значок, созданный с помощью png, высотой и шириной всего 1 пиксель, и сделайте этот пиксель прозрачным.

0 голосов
/ 26 сентября 2011

Ваш сервис полностью независим от того, существует ли для него уведомление.Если вы удалили строку startForeground, служба продолжит работу.Единственный раз, когда служба останавливается, это если вы вызываете context.stopService () или stopSelf ().Добавьте несколько журналов в ваш сервис, и вы увидите, что он продолжает работать.

Переопределите onStartCommand, чтобы определить поведение вашего сервиса после сборки мусора:

 @Override
 public int onStartCommand(Intent intent, int flags, int startId() {
      super.onStartCommand(intent, flags, startId);
      doWork();
      return START_STICKY;
 }

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...