Ja, es ist möglich.
Wenn wir uns die Service.startForeground() -Signatur ansehen, akzeptiert sie beide Benachrichtigungs-ID & die Benachrichtigung selbst (see documentation). Wenn wir also nur eine einzige Benachrichtigung für mehr als einen Vordergrund-Dienst haben möchten, müssen diese Dienste die gleiche Benachrichtigungs-ID & teilen.
Wir können Singleton-Muster verwenden, um die gleiche Benachrichtigung zu erhalten & Benachrichtigungs-ID. Hier ist die Beispiel-Implementierung:
NotificationCreator.java
public class NotificationCreator {
private static final int NOTIFICATION_ID = 1094;
private static Notification notification;
public static Notification getNotification(Context context) {
if(notification == null) {
notification = new NotificationCompat.Builder(context)
.setContentTitle("Try Foreground Service")
.setContentText("Yuhu..., I'm trying foreground service")
.setSmallIcon(R.mipmap.ic_launcher)
.build();
}
return notification;
}
public static int getNotificationId() {
return NOTIFICATION_ID;
}
}
So haben wir diese Klasse in unserem Vordergrund Dienste nutzen können. Zum Beispiel haben wir MyFirstService.java & MySecondService.java:
MyFirstService.java
public class MyFirstService extends Service {
@Override
public void onCreate() {
super.onCreate();
startForeground(NotificationCreator.getNotificationId(),
NotificationCreator.getNotification(this));
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
MySecondService.java
public class MySecondService extends Service {
@Override
public void onCreate() {
super.onCreate();
startForeground(NotificationCreator.getNotificationId(),
NotificationCreator.getNotification(this));
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
nur versuchen, diese Dienste auszuführen. Voila! Sie haben eine einzelne Benachrichtigung für mehrere Vordergrunddienste;)!
Zwei Benachrichtigungen in Android bedeutet? –
@ Pramod, wenn startForeground-Methode in Service verwenden, setzt Android-System Benachrichtigung über Service, der jetzt ausgeführt wird. Ich benutze zwei Dienste. und verwenden Sie die startForeground-Methode in beiden Klassen. –
Eine Option besteht darin, die 2 Dienste in einem einzigen Dienst zu konsolidieren. Ich weiß, dass dies die Frage nicht beantwortet. Aber es kann eine Option für Sie sein, wenn beide Dienste zusammen starten und stoppen. – Madushan