Qual è la differenza tra servizi e servizi intenzionali in Android?

Service è una classe base dell'applicazione di servizio. La classe di servizio viene eseguita nel cavo principale dell'applicazione che può ridurre le prestazioni dell'applicazione. Quindi Intent Service che è una sottoclasse esplicita di Service è nato per rendere le cose più facili. L'Intent Service è usato per eseguire un certo compito in background. Una volta fatto, l'istanza del servizio Intent si termina automaticamente.

Service VS Intent Service in Android

Nella documentazione ufficiale di Android Service e Intent Service sono descritti come segue:

Service

Questa è la classe base per tutti i servizi. Quando aggiungi questa classe, è fondamentale che tu crei un nuovo thread in cui fare tutto il lavoro del servizio, perché utilizza il tuo thread principale di utilizzo, per impostazione predefinita, il che potrebbe rallentare le prestazioni di qualsiasi attività della tua applicazione in esecuzione.

Intent Service

Questa è una posizione di Service che utilizza un thread peasant per gestire tutte le richieste di avvio, una alla volta. Questa è l'opzione migliore se non si richiede che il servizio gestisca più richieste contemporaneamente. Tutto quello che devi fare è utilizzare Handle Intent che riceve l'intento per ogni richiesta di avvio in modo da poter fare la pratica.

Di seguito ci sono alcune differenze chiave tra Service e Intent Service in Android.

Quando usare?

Il Service può essere usato in compiti senza UI, ma non dovrebbe essere troppo lungo. Se avete urgenza di completare compiti lunghi, dovete usare i thread con Service.

L'Intent Service usato in compiti lunghi spesso senza contatto con il thread principale. If communication is required, can use Main Thread handler or broadcast intents. Another case of use is when callbacks are needed (Intent triggered tasks).

How to trigger?

The Service is triggered calling to method start Service.

The Intent Service is triggered using an Intent, it spawns a new worker thread and the method on Handle Intent() is called on this thread.

Triggered From

The utility and Intent Service may be generate from any thread, activity or other utilization fundamental.

Runs On

The utility runs in practice but it runs on the main thread of the utilization.

The Intent Service runs on a separate worker thread.

Limitations / Drawbacks

Slides

Slides available on Speaker Deck.

References

  1. Service. Android API.
  2. IntentService. Android API.
  3. Services. API Guide.
  4. StackOverflow.
  5. Android Services and Background Tasks.