Autore Topic: Terminare Thread dopo un tot tempp  (Letto 817 volte)

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Terminare Thread dopo un tot tempp
« il: 19 Giugno 2011, 09:29:08 CEST »
0
Che voi sappiate esiste un modo per dire ad un thread : dopo un certo tempo fermati ?

Inviato dal mio GT-I9100 usando Tapatalk

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:Terminare Thread dopo un tot tempp
« Risposta #1 il: 19 Giugno 2011, 13:56:31 CEST »
0
Dato che nessuno mi risponde ripropongo i quesito in questo modo : che voi sappiate è cambiato qualcosa nella gestione dei thread e degli handler tra la 2.2 e la 2.3.3 ?
 
In pratica la mia applicazione lancia un thread per prelevare dei dati dal web e contemporaneamente visualizza una ProgressDialog Indeterminate (quello con il cerchio che gira).  Se dopo un pò il thread non riesce a prelevare i dati, restituisce all'handler un messaggio valorizzato a 0 e l'handler visualizza un alert dove informa di non essere riuscito a contattare il server e fa il dismiss della Progress....questo dovrebbe essere il comportamente giusto e che funziona sempre e perfettamente sul mio ideos che monta la 2.2

Se installo lo stesso programma sul mio Galaxy S2 con la 2.3.3 non sempre funziona perchè il ProgressDialog spesso e volentieri resta visualizzato all'infinito e non compare il messaggio di alert....

Qualcuno mi sà dire come mai?

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Terminare Thread dopo un tot tempp
« Risposta #2 il: 20 Giugno 2011, 10:44:56 CEST »
0
Per quello che dici tu ti serve di impostare un timeout alla connessione dati sul web, non al thread.

Guarda la documentazione di HttpURLConnection | Android Developers

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:Terminare Thread dopo un tot tempp
« Risposta #3 il: 20 Giugno 2011, 11:30:42 CEST »
0
Ah ok...grazie ;)

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:Terminare Thread dopo un tot tempp
« Risposta #4 il: 20 Giugno 2011, 15:43:09 CEST »
0
Scusa Marco, ho verificato ed in effetti il sistema si ferma su :

Codice (Java): [Seleziona]
url = new URL(url_str);
URLConnection conn = url.openConnection();
//ora utilizziamo l'oggetto cleaner per "ripulire" l'html e inizializzare l'oggetto rootNode
rootNode = cleaner.clean(new InputStreamReader(conn.getInputStream()));
non tanto su openConnetion quanto su rootNode = cleaner.clean(new InputStreamReader(conn.getInputStream())); dove magari la connessione è lenta e quindi sembra come se fosse in loop continuo (anche se non capisco perchè dopo un pò o quando perde il segnale non stacca più...) come mi consigli di agire per ovviare a questo problema ? Dopo URLConnection conn = url.openConnection(); potrei far partire un CountDown Thread che mi invochi il url.closeConnection(); che dici ?

Grazie



Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Terminare Thread dopo un tot tempp
« Risposta #5 il: 20 Giugno 2011, 16:24:35 CEST »
+1
No, devi sempre gestire il timeout come ti ho consigliato sopra.

I tipi di timeout sono due: uno per la connessione ed uno per lo scambio dei dati.

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:Terminare Thread dopo un tot tempp
« Risposta #6 il: 20 Giugno 2011, 16:43:58 CEST »
0
quindi dovrei usare setConnectTimeout(Int timeout)  e setReadTimeout(Int timeout) in effetti non ho ne l'uno nell'altro nel codice ma solo dei controlli se le variabili vengono memorizzate o meno....grazie Marco! ;) REP+