Я написал небольшое приложение, предназначенное для работы в качестве сервиса. Несколько раз ОС решила отключить службу при освобождении памяти, поведение, которое я хорошо знаю, я не могу остановить. В документации указано, что во избежание этого можно воспользоваться услугами переднего плана, вызвав 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);
Возможно, вы захотите создать код, в котором вы настраиваете 'Уведомление', которое вы передаете' startForeground() '. – CommonsWare
Я мог бы, и я это сделал. См. Править. – Tentux