Autore Topic: Http Request in un Service  (Letto 550 volte)

Offline Dav_android

  • Utente junior
  • **
  • Post: 78
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Tab2 10.1
  • Sistema operativo:
    Windows 8
Http Request in un Service
« il: 01 Dicembre 2015, 14:42:31 CET »
0
Ciao ragazzi, mi chiedevo se in un Service è necessario un AsyncTask per fare una richiesta Http ad un server, oppure la si può fare direttamente nel codice, oppure ancora ci sono altri metodi?

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Http Request in un Service
« Risposta #1 il: 01 Dicembre 2015, 15:09:47 CET »
0
Ti consiglio di usare una libreria che ti gestisce le richieste http, per esempio okhttp. Poi puoi decidere se gestire da solo il thread secondario in cui far girare la richiesta (esempio con asynctask) o se usi la richiesta asincrona fornita dalla libreria stessa.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Dav_android

  • Utente junior
  • **
  • Post: 78
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Tab2 10.1
  • Sistema operativo:
    Windows 8
Re:Http Request in un Service
« Risposta #2 il: 01 Dicembre 2015, 15:12:43 CET »
0
Non ho problemi ad implementare un AsyncTask con la richiesta http, volevo solo capire se era una pratica corretta all'interno di un Service che sostanzialmente è un processo sincrono, oppure ci sono delle tecniche specifiche quando si è all'interno di un service?

Offline iClaude

  • Utente normale
  • ***
  • Post: 245
  • Respect: +17
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S8
  • Sistema operativo:
    Windows 10
Re:Http Request in un Service
« Risposta #3 il: 02 Dicembre 2015, 10:44:41 CET »
0
Ciao ragazzi, mi chiedevo se in un Service è necessario un AsyncTask per fare una richiesta Http ad un server, oppure la si può fare direttamente nel codice, oppure ancora ci sono altri metodi?

Si, a meno che non si tratti di un IntentService, che gira già in background di suo.
Cmq in un Service l' AsyncTask non è molto indicato (è pensato più che altro per le Activity), meglio usare altri sistemi per creare i thread.

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Http Request in un Service
« Risposta #4 il: 02 Dicembre 2015, 11:07:08 CET »
0
Non ho problemi ad implementare un AsyncTask con la richiesta http, volevo solo capire se era una pratica corretta all'interno di un Service che sostanzialmente è un processo sincrono, oppure ci sono delle tecniche specifiche quando si è all'interno di un service?

No, sei obbligato ad utilizzare un thread secondario, perchè il service gira nel main thread.

Dalla documentazione ufficiale di Android ( Services | Android Developers ) :

Citazione
Caution: A service runs in the main thread of its hosting process—the service does not create its own thread and does not run in a separate process (unless you specify otherwise). This means that, if your service is going to do any CPU intensive work or blocking operations (such as MP3 playback or networking), you should create a new thread within the service to do that work.


NON rispondo a domande nei messaggi privati
Bradipao @ Play Store