Autore Topic: Thread & service  (Letto 219 volte)

Offline wlf

  • Utente normale
  • ***
  • Post: 315
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Xperia
Thread & service
« il: 27 Ottobre 2016, 15:37:16 CEST »
0
Salve,
ho una activity (MyActivity) che dopo aver eseguito un salvataggio con SQLite effettua una operazione che dura mediamente 1,4secondi istanziando una classe MyThread:

Codice: [Seleziona]
public class MyThread extends Thread {
..
    @Override
    public void run() {
         ... istruzioni
    }
}

Subito dopo fa partire un service (MyService) che effettua una comunicazione con un serve che potrebbe metterci anche molti secondi, dipende dalla velocità della rete e mole dati da trasferire:

Codice: [Seleziona]
public class MyService extends IntentService {
}

Da MyActivity faccio in sequenza:

Codice: [Seleziona]
new MyThread(MyActivity.this, parameter).start();
....
Intent intent = new Intent(MyActivity.this, MyService.class);
intent.putExtra("TEST", parameter);
startService(intent);

Se faccio partire il service (MyService) sembra che mi venga killato MyThread; quest'ultimo non viene eseguito.Se invece tolgo lo startService il mio MyThread viene eseguito.

Ci sono limiti nell'esecuzione di vari tipi di Thread? Posso dal main Thread istanziare un Thread e far partire un service ed eventualmente un AsyncTask? Oppure uno di questi esclude la partenza degli altri?
Esiste una tabella che riassuma quali e quanti possono convivere, chi viene eseguito in coda e quant'altro?
Grazie.

Offline NetGEL

  • Utente normale
  • ***
  • Post: 196
  • Respect: +9
    • Google+
    • Mostra profilo
  • Play Store ID:
    NetGEL
Re:Thread & service
« Risposta #1 il: 27 Ottobre 2016, 15:54:42 CEST »
0
Ciao, che io sappia una cosa non dovrebbe escludere l'altra. Io in alcuni progetti faccio la stessa cosa che descrivi tu, cioè starto alcuni Thread che devono eseguire determinate funzioni in parallelo e subito dopo starto 1 o più servizi e il tutto lavora in modo corretto.

Offline wlf

  • Utente normale
  • ***
  • Post: 315
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Xperia
Re:Thread & service
« Risposta #2 il: 27 Ottobre 2016, 17:23:42 CEST »
0
Può essere dovuto al fatto che non utilizzo un handler? Il Thread non deve interagire con la UI quindi non mi interessa che mi ritorni alcunché.

Offline NetGEL

  • Utente normale
  • ***
  • Post: 196
  • Respect: +9
    • Google+
    • Mostra profilo
  • Play Store ID:
    NetGEL
Re:Thread & service
« Risposta #3 il: 27 Ottobre 2016, 17:31:48 CEST »
0
Io non uso handler, semplicemente lancio un Thread e poi starto un servizio in background

Offline wlf

  • Utente normale
  • ***
  • Post: 315
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Xperia
Re:Thread & service
« Risposta #4 il: 27 Ottobre 2016, 17:40:31 CEST »
0
Il Thread lo hai dichiarato dentro alla MyActivity oppure hai una classe esterna separata?
Io ne uso una esterna separata perché lo riutilizzo da altre parti ...

Offline NetGEL

  • Utente normale
  • ***
  • Post: 196
  • Respect: +9
    • Google+
    • Mostra profilo
  • Play Store ID:
    NetGEL
Re:Thread & service
« Risposta #5 il: 27 Ottobre 2016, 17:42:33 CEST »
0
Lo dichiaro nella myActivity

Offline iClaude

  • Utente normale
  • ***
  • Post: 177
  • Respect: +11
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S5
  • Sistema operativo:
    Windows 10
Re:Thread & service
« Risposta #6 il: 29 Ottobre 2016, 12:38:56 CEST »
0
Sei sicuro che il primo thread non venga eseguito?
Considera che potrebbe essere eseguito prima il secondo.  I thread sono paralleli: non c'è alcuna garanzia che uno sia eseguito prima dell'altro.

Offline wlf

  • Utente normale
  • ***
  • Post: 315
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Xperia
Re:Thread & service
« Risposta #7 il: 02 Novembre 2016, 09:26:42 CET »
0
Ho messo un break nel debugger e ho pure messo un Log.d che non compare ... sono quindi abbastanza sicuro che non venga eseguito.