2013-07-17 5 views
1

Я написал небольшое приложение, предназначенное для работы в качестве сервиса. Несколько раз ОС решила отключить службу при освобождении памяти, поведение, которое я хорошо знаю, я не могу остановить. В документации указано, что во избежание этого можно воспользоваться услугами переднего плана, вызвав startForeground и передав уведомление этому методу.Android Foreground Service - уведомление, которое не показывает индикаторы устройства Samsung Galaxy

Я написал код, чтобы показать уведомление, и все работает нормально. Существует одно конкретное поведение, которое я не слишком увлекаюсь, когда я нажимаю кнопку «power» на своем устройстве, поэтому экран отключается от двух индикаторов «уведомления» в нижней части экрана Samsung Galaxy S 1. Обычно это указывает на то, что на телефоне есть что-то новое, например, SMS или пропущенный телефонный звонок. Я не думаю, что это имеет смысл, что они загораются, когда единственное уведомление доступно, чтобы сказать, что есть текущее обслуживание.

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

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

Однако есть ли способ остановить освещение в нижней части этого Galaxsy S1, как если бы появилась новая важная информация?

Edit: Вот код, я использую:

Intent intentForeground = new Intent(this, MainService.class) 
     .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 

    PendingIntent pendIntent = PendingIntent.getActivity(getApplicationContext(), 0, intentForeground, 0);  
    Notification notification; 
    NotificationCompat.Builder builder = new NotificationCompat.Builder(getApplicationContext()) 
     .setSmallIcon(R.drawable.ic_notification) 
     .setTicker("Service started...") 
     .setContentTitle("Vantage phone client") 
     .setContentText("Service running") 
     .setContentIntent(pendIntent) 
     .setDefaults(Notification.DEFAULT_ALL) 
     .setAutoCancel(true) 
     .setOnlyAlertOnce(true) 
     .setOngoing(true); 

    notification = builder.build(); 
    notification.flags |= Notification.FLAG_FOREGROUND_SERVICE; 

    startForeground(1, notification); 
+1

Возможно, вы захотите создать код, в котором вы настраиваете 'Уведомление', которое вы передаете' startForeground() '. – CommonsWare

+0

Я мог бы, и я это сделал. См. Править. – Tentux

ответ

1

Вы используете DEFAULT_ALL для значений по умолчанию, который также даст вам по умолчанию огней, и, видимо, на устройстве, по умолчанию огни, включая освещение их. Я бы убрал setDefaults() или ограничил его тем, что он был другим, кроме огней (Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE).

+0

Спасибо за ваш своевременный ответ. Ваш ответ правильный, хотя причина, по которой это происходит в моем приложении, подробно описана в сообщении I'b aouut, чтобы сделать ... – Tentux

0

Мой код был внутри onStartCommand, который вызывался более одного раза, это совершенно нормально.

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

С тех пор я переместил код для создания уведомления и вызвал startForeground в onCreate, где он должен только вызываться один раз.

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

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