2010-07-01 7 views

risposta

12

No. Non c'è la differenza fondamentale.

Detto questo, la sottoclasse di android.app.Application è un molto buon posto per archiviare dati globali/di stato. C'è solo un'istanza e tutto ciò che deriva dal contesto ha accesso ad esso.

Sono anche sicuro che legare un servizio a un'applicazione comporterà delle strane vite se non si presta attenzione. Quello che voglio dire è che anche se la tua app è fuori dalla vista e non ha attività in vita, la tua applicazione potrebbe ancora esistere perché il tuo servizio esiste ancora. Il tuo servizio esiste ancora perché la tua applicazione esiste ancora. Dovresti arrestare manualmente il servizio in base a qualche evento diverso da onDestroy.

+0

Grazie. Quindi, in questo caso non esiste un modo pulito per arrestare il servizio. –

+0

Devo chiedere, perché vuoi un servizio se vuoi memorizzare i dati nell'oggetto Application? Tutte le tue attività hanno accesso all'oggetto app tramite getApplication(). –

+0

Il servizio eseguirà tutto l'I/O. Sto cercando di implementare qualcosa come http://stackoverflow.com/questions/3141632/android-service-interacting-with-multiple-ities Forse posso memorizzare questo stato/stato globale nel mio servizio (?) . Non so se questo è un buon design o un cattivo design perché è la prima volta che lavoro con più attività e servizi. –

3

risposta di @ Jere.Jones non è corretto al 100%. Hai un'istanza della classe di applicazione per processo. Quindi se gestisci il tuo servizio in un processo separato, ad es. con

<service 
     android:name=".engine.NetworkService" 
     android:exported="false" 
     android:process=":xxxService" /> 

si dispone di due istanze separate di Appliaction, il che significa che se avete bisogno di "tenere uno stato" è necessario garantire la sua traversata o non processo o è necessario utilizzare IPC per sincronizzare questi sates.