Autore Topic: Lag Asycntask Refresh UI  (Letto 498 volte)

Offline lillogoal

  • Utente normale
  • ***
  • Post: 167
  • Respect: +4
    • Google+
    • lillosogliani
    • Mostra profilo
    • LilloNet
  • Dispositivo Android:
    Galaxy s3, Nexus 7,galaxy s advance,galaxy scl
  • Play Store ID:
    Lillonet Inc.
  • Sistema operativo:
    Windows 8,7 & Kali-Linux
Lag Asycntask Refresh UI
« il: 19 Luglio 2013, 11:34:39 CEST »
0
Salve,
sono sempre io, scusate per il disturbo volevo farvi solo due domande.
1) Non riesco a gestire più download in modo sincrono cioè vorrei utilizzare asynctask per fare un multidownloader che permette di scaricare più file insieme.
2) nella funzione onProgressUpdate quando aggiorno la UI settato e modificando dati ecc... vorrei migliorare la stabilità dell'applicazione in modo che non "laggasse" nel senso io creo una notifica all'inizio del processo e mentre esso avanza vorrei modificare la notifica però per far questo devi "build" ricostruirla e questo fa laggare l'applicazione...
Vi Ringrazio :)
ps: ho scritto di fretta
Chi non progetta la sicurezza , programma il fallimento! K.M

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:Lag Asycntask Refresh UI
« Risposta #1 il: 21 Luglio 2013, 09:22:44 CEST »
0
Gli AsyncTask da qualche tempo vengono eseguiti uno alla volta (come default), proprio per evitare lag sulla UI nel caso quasi mai necessario di averne molti attivi in parallelo.

E' un problema insormontabile se gli asynctask che lanci vengono eseguiti uno di seguito all'altro?

Quando al lag creato dall'onprogressupdate escludo sia un problema dell'update della UI, probabilmente fai anche operazioni onerose non di UI.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline lillogoal

  • Utente normale
  • ***
  • Post: 167
  • Respect: +4
    • Google+
    • lillosogliani
    • Mostra profilo
    • LilloNet
  • Dispositivo Android:
    Galaxy s3, Nexus 7,galaxy s advance,galaxy scl
  • Play Store ID:
    Lillonet Inc.
  • Sistema operativo:
    Windows 8,7 & Kali-Linux
Re:Lag Asycntask Refresh UI
« Risposta #2 il: 21 Luglio 2013, 09:52:36 CEST »
0
Io sono riuscito a lanciare più asynctask in parallelo... ma non riesco a gestire la 2 solo la 1 cioè le altre prendono di default i valori che modifico nel 1... ad esempio scsrico il primo file esso avrà una sua velocità e un suo tempo rimanente... insieme ne faccio partire un altro esso avrà un'altra velocità... se ti serve poi potrei postare: onProgressUpdate tutta la funzione
Chi non progetta la sicurezza , programma il fallimento! K.M

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:Lag Asycntask Refresh UI
« Risposta #3 il: 21 Luglio 2013, 10:50:14 CEST »
0
Io sono riuscito a lanciare più asynctask in parallelo...

Non ho detto che non si può, ho detto che se possibile è da evitare perchè può far laggare.

ma non riesco a gestire la 2 solo la 1 cioè le altre prendono di default i valori che modifico nel 1...

A cosa ti riferisci con 1 e 2?

ad esempio scsrico il primo file esso avrà una sua velocità e un suo tempo rimanente... insieme ne faccio partire un altro esso avrà un'altra velocità...

Il problema è con la velocità di scaricamento?

se ti serve poi potrei postare: onProgressUpdate tutta la funzione

Una volta capita la natura del tuo problema, sicuramente ci vuole il codice per dirti dove sta l'errore. Ma attualmente non è chiaro quale sia il problema.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline lillogoal

  • Utente normale
  • ***
  • Post: 167
  • Respect: +4
    • Google+
    • lillosogliani
    • Mostra profilo
    • LilloNet
  • Dispositivo Android:
    Galaxy s3, Nexus 7,galaxy s advance,galaxy scl
  • Play Store ID:
    Lillonet Inc.
  • Sistema operativo:
    Windows 8,7 & Kali-Linux
Re:Lag Asycntask Refresh UI
« Risposta #4 il: 21 Luglio 2013, 11:04:30 CEST »
0
I problemi sono due: 1) è il lag nell'aggiornamento della ui... 2) Vorrei che per ogni download quindi ogni task si creasse una sorta di lista o tabella con tempo rimanente progress bar velocità ecc praticamente i valori vengono calcolati solo per la prima task e per le altre non riesco a gestirli. È difficile da spiegare appena posso ti scrivo il codice della funzione onProgressUpdate.  Grazie mille

Post unito: 21 Luglio 2013, 22:04:04 CEST
Ecco il codice della on ProgressUpdate
Codice (Java): [Seleziona]
speed = NANOS_PER_SECOND / BYTES_PER_MIB * totalRead / (System.nanoTime() -  start + 1);
            dimrim = ((((file_sizes * 1024) * 1024) - ((int) (totalRead))) / 1024) / 1024;
            timerimas = (int) ((dimrim ) / speed);
            ore = timerimas / 3600;
            minuti = (timerimas % 3600) / 60;
            secondi = timerimas - (ore * 3600) - (minuti * 60);


            progresso =  (totalRead * 100) / lenghtOfFile;
            TextView txt_velocita;
            TextView txt_namef;
            TextView txt_timerima;
            TextView txt_dimtota;
            TextView txt_dimrim;
            TextView txt_percentuale;
            ProgressBar prg_progressbar;
            txt_velocita = (TextView) view.findViewById(R.id.txt_velocita);
            txt_namef = (TextView) view.findViewById(R.id.txt_namef);
            txt_timerima = (TextView) view.findViewById(R.id.txt_timerima);
            txt_dimtota = (TextView) view.findViewById(R.id.txt_dimtota);
            txt_dimrim =(TextView) view.findViewById(R.id.txt_dimrim);
            txt_percentuale = (TextView) view.findViewById(R.id.txt_percent);
            prg_progressbar = (ProgressBar) view.findViewById(R.id.prg_progressbar);

            txt_velocita.setText("Velocita' Download:" + df.format(speed) + "Mbyte/s");
            txt_namef.setText("Nome File:"+file_name);
            txt_timerima.setText("Tempo Rimanente:"+ore+"H| "+ minuti +"M| " + secondi+"S ");
            txt_dimtota.setText("Dimensione file:"+(file_sizes) + "MB");
            txt_dimrim.setText("Dimensione Rimanente:" + dimrim + "MB");
            txt_percentuale.setText("Percentuale:"+progresso+"%");
            prg_progressbar.setProgress((int) progresso);




            if(d==0)
            {
                txt_url.setText("");
                d++;
            }
           mBuilder.setContentTitle("File in Download:" +file_name)
                    .setContentText("Download in progress!!             Percentuale:"+progresso+"%")
                    .setSmallIcon(R.drawable.iconotify);
            mBuilder.setProgress(100, (int) progresso, false);

            if(d == 50)
            {
                mNotifyManager.notify(id, mBuilder.build());

                d=0;
            }
            else
            {
                d++;
            }
« Ultima modifica: 21 Luglio 2013, 22:04:04 CEST da lillogoal, Reason: Merged DoublePost »
Chi non progetta la sicurezza , programma il fallimento! K.M