2012-03-29 12 views
6

Service.startForeground() vs NotificationManager.notify(), fornire comportamenti diversi.Android Service.startForeground NON rispetta l'univocità dell'ID di notifica

Quando si utilizza notificare con due diversi ID di notifica, vengono creati 2 notifiche - Buona.

Quando fare lo stesso con startForground, una notifica sovrascrive l'altro - Bad.

Dispositivo testato: Nexus S (2.3.6) e Asus Transformer (4.0.3).

Qualche idea su come posso eseguire un servizio importante (in primo piano) che può avere diverse notifiche (numero dinamico)?

+0

Accade anche sul trasformatore Asus (Android 4.0.3). –

+0

È stato aperto un problema: http://code.google.com/p/android/issues/detail?id=28011 –

risposta

0

Bene, non è la soluzione migliore, ma è sempre possibile "riassegnare" una notifica a un ID di notifica respinto. Ad esempio, supponiamo di avviare Process 1 (in primo piano) e quindi Process 2 (utilizzando NotificationManager). Al termine del processo 1, ignorare la notifica per Processo 2 e aggiornare la notifica in primo piano per Processo 1 in modo da visualizzare l'avanzamento per Processo 2.

In questo modo non è necessario chiamare stopForeground() e startForeground(), che può consentire servizio da uccidere nel mezzo (non ho effettivamente verificato che sia vero, però).

+0

Vaskevich, cosa succede se in questo contesto è coinvolto solo un singolo processo? E puoi semplicemente elaborare la riassegnazione della notifica al licenziamento ...? – nmxprime

+0

La mia comprensione è che non ha importanza, dal momento che quando chiami 'stopForeground()', Android può ora terminare il servizio. Mi sento come ho elaborato abbastanza; per favore rileggete la seconda frase alcune volte! –

Problemi correlati