Autore Topic: lanciare più asynctask  (Letto 624 volte)

Offline Rino63

  • Utente normale
  • ***
  • Post: 167
  • Respect: +3
    • Mostra profilo
lanciare più asynctask
« il: 11 Giugno 2014, 17:47:58 CEST »
0
sono sempre alle prese con il mo asynctask....:(  adesso riesco a lanciarlo correttamente ma ovviamente siccome dovrebbe essere esegito ogni minuto non riesco a lanciarne che una istanza e l'app va in errore.... come si può fare in modo di lanciare più volte lo stesso asynctask? grazie per l'attenzione.

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:lanciare più asynctask
« Risposta #1 il: 11 Giugno 2014, 18:06:25 CEST »
0
sono sempre alle prese con il mo asynctask....:(  adesso riesco a lanciarlo correttamente ma ovviamente siccome dovrebbe essere esegito ogni minuto non riesco a lanciarne che una istanza e l'app va in errore.... come si può fare in modo di lanciare più volte lo stesso asynctask? grazie per l'attenzione.

Una istanza di AsyncTask può essere lanciata una sola volta.
Puoi però creare un'altra istanza (col new per intendersi) e lanciarla.

NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Rino63

  • Utente normale
  • ***
  • Post: 167
  • Respect: +3
    • Mostra profilo
Re:lanciare più asynctask
« Risposta #2 il: 11 Giugno 2014, 18:29:04 CEST »
0
si grazie, ho risolto proprio così. un runnable che scatta ogni minuto e ne crea una nuova istanza. l'unico mio dubbio (sto per dire una bestialità lo so) è che il task non viene distrutto esplicitamente. non è che questo può provocare alla lunga problemi di memoria?(penso che ci sia un meccanismo automatico di pulizia ma è meglio chiedere....)

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:lanciare più asynctask
« Risposta #3 il: 11 Giugno 2014, 18:41:00 CEST »
0
si grazie, ho risolto proprio così. un runnable che scatta ogni minuto e ne crea una nuova istanza. l'unico mio dubbio (sto per dire una bestialità lo so) è che il task non viene distrutto esplicitamente. non è che questo può provocare alla lunga problemi di memoria?(penso che ci sia un meccanismo automatico di pulizia ma è meglio chiedere....)

Tutti gli AsyncTask pescano i Thread da un pool comune, quindi i Thread sono riusati una volta che l'AsyncTask termina in modo naturale.

Memory leak puoi averne se crei oggetti e rimangono reference "appese". Ma te ne accorgi facilmente facendo girare l'app per un po' e vedendo se la memoria occupata cresce indefinitamente.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

iClaude

  • Visitatore
Re:lanciare più asynctask
« Risposta #4 il: 13 Giugno 2014, 12:42:29 CEST »
0
si grazie, ho risolto proprio così. un runnable che scatta ogni minuto e ne crea una nuova istanza. l'unico mio dubbio (sto per dire una bestialità lo so) è che il task non viene distrutto esplicitamente. non è che questo può provocare alla lunga problemi di memoria?(penso che ci sia un meccanismo automatico di pulizia ma è meglio chiedere....)

Di sicuro creare continuamente nuovi oggetti AsyncTask comporta un lavoro aggiuntivo per il Garbage Collector. Per questo in questi casi la Best practice  è un usare gli Handler. Poi magari nel tuo specifico caso non noterai alcuna differenza.

Offline Rino63

  • Utente normale
  • ***
  • Post: 167
  • Respect: +3
    • Mostra profilo
Re:lanciare più asynctask
« Risposta #5 il: 15 Giugno 2014, 20:18:15 CEST »
0
in effetti alla fine l'asynctask viene lanciato ogni 30 minuti quindi credo che non ci siano problemi. l'unica cosa è che il servizio viene killato e poi riavviato ogni tanto e quindi forse dovrei renderlo persistente ma non so se vale la pena...