2010-06-18 13 views
5

In Android, se voglio fare un certo lavoro di fondo, qual è la differenza traAndroid - Esegui in background - Servizio vs. classe Java Standard

Creazione di un servizio per fare il lavoro, e avere l'attività avviare il Servizio VS. Creazione di una classe java standard per fare il lavoro, e avendo l'attività creare un oggetto della classe e invocare metodi, per fare il lavoro in thread separati.

+0

vedere questo http://stackoverflow.com/questions/2633334/application-threads-vs-service-threads –

risposta

5

Fare i propri thread è eccessivo, ci sono soluzioni per questo, quindi non devi preoccuparti delle parti difficili della concorrenza. Dai uno sguardo a AsyncTask o IntentService. Se fai un servizio, tieni presente che il tuo servizio può essere ucciso in qualsiasi momento.

+0

Nella maggior parte dei casi AsyncTask è sufficiente per tutte le attività che si desidera eseguire su un altro thread. – Janusz

3

Bene, Android fornisce alcuni metodi utili per creare facilmente thread di lavoro. Guarda la definizione della classe Looper. Permette di inviare eventi tramite un Handler per essere eseguiti uno dopo l'altro in un altro thread o trasmettere messaggi tra thread diversi.

Un servizio è niente di speciale. Creare un servizio è solo un modo per dire al sistema operativo che è necessario fare un po 'di lavoro anche quando la tua attività non è visibile.

2

A seconda dell'applicazione che stai creando potrebbe non essere un'opzione.

Quasi tutte le applicazioni di rete disporranno di alcune funzionalità su un servizio per consentire all'utente di modificare l'attività attiva mentre viene scaricato qualcosa.

In un lettore RSS, ad esempio, è possibile fare clic su "Aggiorna tutto" e, in base alla connessione dati corrente, potrebbe richiedere un po 'più tempo di quanto si desidera. Quindi se vuoi che l'utente sia in grado di tornare alla schermata Home e fare qualsiasi altra cosa mentre i file vengono scaricati dovrai usare un Servizio.

Un servizio consente di eseguire attività in background mentre l'utente non è in attività. Questo non significa che sarà in esecuzione tutto il tempo. Controlla lo Service lifecycle.

BTW IntentService è un servizio.

Problemi correlati