我编写了一个旨在作为服务运行的小型应用程序。有几次操作系统决定在释放内存时关闭服务,我很清楚我无法停止这种行为。文档指出,为避免这种情况发生,您可以通过调用 startForeground 并将通知传递给此方法来使用前台服务。
我已经编写了代码来显示通知,并且一切似乎都工作正常。但是,我不太喜欢一种特殊的行为,当我按下设备上的“电源”按钮时,屏幕会关闭,三星 Galaxy S 1 底部的两个“通知”灯会亮起。通常这表明手机上有一些“新”内容需要查看 - 例如短信或未接电话。我认为当唯一可用的通知是说有正在进行的服务时,这些亮起没有多大意义。
我了解我无法在没有通知的情况下使用前台服务。
我了解,如果它不再是前台服务,您将无法取消前台服务。
但是,有什么方法可以阻止这个 Galaxsy S1 底部的灯亮起来,就好像有新的重要信息可用一样?
编辑:这是我正在使用的代码:
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);