Sì, è possibile.
Se diamo un'occhiata alla firma Service.startForeground(), accetta entrambi l'ID di notifica & la notifica stessa (see documentation). Quindi, se vogliamo avere un'unica notifica per più di un primo piano, questi servizi devono condividere lo stesso ID di notifica &.
Possiamo usare il modello singleton per ottenere la stessa notifica ID di notifica &. Ecco l'esempio di implementazione:
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;
}
}
Quindi, siamo in grado di utilizzare questa classe nei nostri servizi in primo piano. Per esempio abbiamo 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;
}
}
Basta provare a eseguire questi servizi. Ecco! Hai una notifica singola per più servizi in primo piano;)!
fonte
2016-10-18 06:35:48
Due notifiche in Android significa? –
@Pramod quando si utilizza il metodo startForeground in Servizio, il sistema Android imposta la notifica relativa al servizio in esecuzione ora. io uso due servizi. e utilizzare il metodo startForeground in entrambe le classi. –
Un'opzione è consolidare i 2 servizi in un singolo servizio. So che questo non risponde alla domanda. Ma potrebbe essere un'opzione per te dato che entrambi i servizi iniziano e finiscono insieme. – Madushan