2012-03-26 12 views
8

Possiamo avere più istanze di un servizio in Android? Desidero un servizio che possa rendere il telefono silenzioso in un momento specifico e voglio riutilizzarlo per rendere il telefono in modalità vibrazione in un momento specifico. Quindi, in pratica, se riesco a far funzionare il servizio più volte, non è necessario creare un altro servizio per impostare il telefono in modalità vibrazione. Inoltre, se possiamo eseguire più istanze, ti preghiamo di spiegare come fermarlo. Qualsiasi suggerimento sul codice ti aiuterà molto.Come avere più istanze di servizio in Android

risposta

25

Possiamo avere più istanze di un servizio in Android?

No. Si può avere più sottoclassi di Service, ma qualsiasi sottoclasse di Service avrà precisamente 0 o 1 istanze in un dato momento.

Desidero un servizio che possa rendere il telefono silenzioso in un momento specifico e voglio riutilizzarlo per rendere il telefono in modalità vibrazione in un momento specifico.

Non si dovrebbe utilizzare un servizio per nessuno di questi. Utilizzare AlarmManager e uno BroadcastReceiver, per favore.

+0

Grazie, sto usando AlarmManager per avviare il servizio in un intervallo di tempo. Potresti per favore aiutarmi a capire BroadcastReceiver e come usarlo con AlarmManager? –

+0

@SumitSahoo: Invece di chiamare 'getService()' per creare il tuo 'PendingIntent', tu chiami' getBroadcast() '. E, invece che la tua logica aziendale si trova in un 'Servizio', si trova in un' BroadcastReceiver' (tipicamente registrato nel manifest tramite un elemento ''). – CommonsWare

2

Non credo che il servizio possa essere utilizzato per uno scopo simile. Il servizio deve fornire alcune funzionalità, ma solo un significato, non per diversi scopi. È meglio creare un servizio aggiuntivo per mantenere il codice semplice e chiaro.

2

La tua domanda non ha molto senso. Sembra che quello che vuoi fare sia avere più istanze dello stesso servizio in esecuzione e fare cose diverse contemporaneamente. Ma la tua domanda dipende fondamentalmente dal fatto che i servizi non dovrebbero fare cose su una scala temporale lunga. Invece, ciò che dovrebbe accadere è che ricevono un intento, magari generano una discussione o qualcosa del genere, e poi smettono di girarci intorno. Ricorda che un servizio è ancora in esecuzione sul thread principale, non è in background, quindi non dovresti eseguire attività a lungo termine in ogni caso. Quello che potresti voler vedere è un IntentService, che coordina con le tue attività attraverso l'uso di intenti che controllano cosa dovrebbe accadere.

Problemi correlati