I servizi Android sono i cavalli di battaglia del piattaforma. Consentono alle applicazioni di eseguire attività di lunga durata e offrono funzionalità per le applicazioni esterne. Sfortunatamente, dal momento che vengono eseguiti in background e non sono visivamente evidenti per gli sviluppatori, possono essere fonte di grattacapi. Se hai visto un ANR (attività che non risponde) o ti sei chiesto perché un servizio era in esecuzione quando non dovrebbe essere, un servizio mal implementato potrebbe essere il problema.
Il temuto ANR Diamo un'occhiata a due errori principali causa di servizi: ANR. Questi interrompono l'esperienza dell'utente e offrono all'utente la possibilità di forzare la chiusura. Ciò può portare a un utente che disinstalla l'app o che il processo in background si trova in uno stato interrotto. Il motivo è che i servizi vengono lanciati dal thread chiamante, solitamente questo è il thread dell'interfaccia utente. Servizi sempre in esecuzione. Sebbene Android fornisca meccanismi per la pianificazione e l'interruzione dei servizi, non tutti gli sviluppatori seguono le linee guida. In effetti, molti degli esempi che ho visto non menzionano nemmeno l'interruzione del servizio. Ciò può portare a prestazioni complessive più lente, confusione dell'utente e esaurimento della batteria. Immagino che gli sviluppatori Android di Google abbiano visto che questo stava diventando un problema e ha introdotto la classe IntentService in Android 1.5. La classe IntentService risolve i problemi di cui sopra e riassume tutta la gestione dei thread e il blocco del servizio dallo sviluppatore. È un modo molto semplice e potente di scaricare le attività dal thread principale dell'applicazione.
Perché è meglio utilizzare IntentService per "gestire gli allarmi attivati da AlarmManager/manifest RecordReceiver registrato", cosa può fare il servizio regolare non sarà in grado di? – rayman
@rayman: gestisce il thread in background e la coda di lavoro per te. – CommonsWare
Penso di aver capito, ma sai un esempio che posso controllare, quindi posso vedere la leggera diffrenza tra usarlo o no? grazie. – rayman