CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: Pierdebeer con ben 39 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: Pierdebeer con ben 195 Thanks ricevuti negli ultimi sette giorni
Utente del mese: Pierdebeer con ben 748 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 8 su 8
Discussione:

ProgressDialog dopo 2 secondi di attesa

  1. #1
    Androidiano
    Registrato dal
    Nov 2011
    Località
    Ivrea
    Messaggi
    132
    Thanks
    7
    Thanked 8 Times in 8 Posts
    Predefinito

    ProgressDialog dopo 2 secondi di attesa

    Ciao,

    vorrei far comparire una ProgressDialog o ProgressBar tra una activity e l’altra quando il passaggio dura più di 2 secondi; il caricamento varia in base alla mole dei dati.
    Per far questo ho pensato e adottato un AsyncTask.

    Nel metodo doInBackground però ho provato a far dialog.show() e va in errore perché lui stesso è un thread e va in conflitto.
    Posso anche non usare l'AsyncTask ma come posso visualizzare una progressDialog o una ProgressBar e visualizzarla durante il passaggio dalla prima activity fino a fine caricamento della seconda Activity dopo l'attesa dura più di 2 secondi?

    Idee?

    grazie
    Ultima modifica di genty; 03-12-12 a 14:11

  2.  
  3. #2
    Androidiano
    Registrato dal
    Oct 2010
    Messaggi
    227
    Thanks
    27
    Thanked 77 Times in 35 Posts
    Predefinito

    Quote Originariamente inviato da genty Visualizza il messaggio
    Ciao,

    vorrei far comparire una ProgressDialog o ProgressBar tra una activity e l’altra quando il passaggio dura più di 2 secondi; il caricamento varia in base alla mole dei dati.
    Per far questo ho pensato e adottato un AsyncTask.

    Nel metodo doInBackground però ho provato a far dialog.show() e va in errore perché lui stesso è un thread e va in conflitto.
    Posso anche non usare l'AsyncTask ma come posso visualizzare una progressDialog o una ProgressBar e visualizzarla durante il passaggio dalla prima activity fino a fine caricamento della seconda Activity dopo l'attesa dura più di 2 secondi?

    Idee?

    grazie
    Prima cosa che mi salta in mente, Fai un costruttore del tuo AsyncTask che prende come parametro la tua Activity (o una interfaccia che la tua Activity implementa) con due metodi tipo showDialog(..) e dismissDialog(..), metti le logiche di visualizzazione e chiusura del progress dialog in quelle due funzioni, salva l'activity chiamante nell'asynctask in modo da averla disponibile e richiama show e dismiss dall'AsyncTask.

    Spero di aver scritto comprensibile, è giusto un'idea buttata li, non ho mai fatto nulla del genere ma è la prima cosa che m'è venuta in mente e dovresti riuscire a provarla in quattro e quattrotto.
    spero serva
    ciao
    Felice possessore di un LG O1 con GingerLOL 1.5.2 e di un Mediacom Smartpad 810c con Pistoneone 4.2.1 / 5.0 Samsung Galaxy Tab 10.1 P7510 (originale per ora) Mediacom Smartpad 715i (ROM smartpao 2.1), Mediacom Smartpad 842i (ROM smartpao 2.0)
    Mini-Forum-FAQ per Mediacom Smartpad 810c

  4. #3
    Senior Droid
    Registrato dal
    Mar 2012
    Messaggi
    326
    Smartphone
    Samsung Galaxy S2
    Thanks
    0
    Thanked 24 Times in 23 Posts
    Predefinito

    Quote Originariamente inviato da genty Visualizza il messaggio
    Ciao,

    vorrei far comparire una ProgressDialog o ProgressBar tra una activity e l’altra quando il passaggio dura più di 2 secondi; il caricamento varia in base alla mole dei dati.
    Per far questo ho pensato e adottato un AsyncTask.

    Nel metodo doInBackground però ho provato a far dialog.show() e va in errore perché lui stesso è un thread e va in conflitto.
    Posso anche non usare l'AsyncTask ma come posso visualizzare una progressDialog o una ProgressBar e visualizzarla durante il passaggio dalla prima activity fino a fine caricamento della seconda Activity dopo l'attesa dura più di 2 secondi?

    Idee?

    grazie
    Il passaggio da una activity ad un altra non deve durare mai 2 secondi! Se fai operazioni pesanti che richiedono tempo falli in un asyncTask che richiami all'onCreate dell'activity che viene lanciata.
    Con questo metodo puoi fare l'overide del metodo OnStart della classe Activity e far partire un progressDialog non appena viene lanciata la seconda activity. Poi nel OnPostExecute dell'asyncTask, fai un dismiss del progressDialog!

    Ricordati che il metodo OnPostExecute viene eseguito nel main thread!
    Federico Palmieri
    mailto: superfect@hotmail.it
    Gestione Clienti Premium -> QUI

  5. #4
    Androidiano
    Registrato dal
    Nov 2011
    Località
    Ivrea
    Messaggi
    132
    Thanks
    7
    Thanked 8 Times in 8 Posts
    Predefinito

    Quote Originariamente inviato da fedestylah Visualizza il messaggio
    Il passaggio da una activity ad un altra non deve durare mai 2 secondi! Se fai operazioni pesanti che richiedono tempo falli in un asyncTask che richiami all'onCreate dell'activity che viene lanciata.
    Con questo metodo puoi fare l'overide del metodo OnStart della classe Activity e far partire un progressDialog non appena viene lanciata la seconda activity. Poi nel OnPostExecute dell'asyncTask, fai un dismiss del progressDialog!

    Ricordati che il metodo OnPostExecute viene eseguito nel main thread!

    Grazie per la risposta..
    mi sembra una buona soluzione la tua..
    Ma quindi tu faresti partire il progressDialog nell'Onstart della seconda Activity. Perché non nell'Oncreate allora?
    Con main thread intendi dire che posso raggiungere il progress dialog per fare il dismiss() giusto?

    Mi piacerebbe l'idea di far fare delle cose dentro l'asynch task ma in doinbackground giusto?
    Anche perché se ho capito bene la logica è solo in quel metodo che va in 'parallelo' all'activity o sbaglio? e come posso raggiungere un metodo e lanciarlo? Forse mi stai dicendo di ricreare il metodo dentro doinbackground?
    come potrei fare?
    grazie
    Ultima modifica di genty; 05-12-12 a 11:28

  6. #5
    Senior Droid
    Registrato dal
    Mar 2012
    Messaggi
    326
    Smartphone
    Samsung Galaxy S2
    Thanks
    0
    Thanked 24 Times in 23 Posts
    Predefinito

    All'interno del doInBackground puoi fare qualsiasi tipo di operazione purchè tu non interagisca con la UI perchè è gestita in via esclusiva dal main thread!
    Con un asyncTask tu crei un "sotto-processo". Quello che scrivi nel doInBackground, viene quindi eseguito in modo asyncrono e non deve interigerare con la UI, il codice scritto nell'onPostExecute viene eseguito nel main thread appena il doInBackgroud ha finito le proprie operazioni, quindi in questo punto puoi eseguire tutti gli aggiornamenti o modifiche della UI.

    E' importante sapere che il ciclo di vita dell'AsyncTask è strettamente legato all'activity dalla quale viene lanciata!
    Federico Palmieri
    mailto: superfect@hotmail.it
    Gestione Clienti Premium -> QUI

  7. #6
    Androidiano
    Registrato dal
    Nov 2011
    Località
    Ivrea
    Messaggi
    132
    Thanks
    7
    Thanked 8 Times in 8 Posts
    Predefinito

    Ok ho più chiare le cose..
    Ma se io volessi che questo dialog appaia solo se il caricamento dell'activity dura più di 2 secondi come mi consigli di fare visto che abbiamo anche un asynch task collegato?

    L'idea tua di far delle cose in doInBackground è buona ma è un pò dura raggiungere tutti gli elementi che ho nell'activity..
    Ultima modifica di genty; 05-12-12 a 12:07

  8. #7
    Senior Droid
    Registrato dal
    Mar 2012
    Messaggi
    326
    Smartphone
    Samsung Galaxy S2
    Thanks
    0
    Thanked 24 Times in 23 Posts
    Predefinito

    All'asyncTask puoi passare array di qualsiasi tipo che la soluzione più performante, sennò puoi globalizzarli a livello di Activity e quindi renderli accessibili ovunque.

    Nel caso che mi dicevi tu puoi creare un'altro asyncTask diamogli il nome async2, nel doInBackground puoi fare sleep(2000). Dopo di questo nell'onPostExecute, fai un getCurrentStatus() del primo asyncTask, se questo è ancora in esecuzione allora fai partire il progressDialog sennò non fai niente!
    Federico Palmieri
    mailto: superfect@hotmail.it
    Gestione Clienti Premium -> QUI

  9. Il seguente Utente ha ringraziato fedestylah per il post:

    genty (05-12-12)

  10. #8
    Androidiano
    Registrato dal
    Nov 2011
    Località
    Ivrea
    Messaggi
    132
    Thanks
    7
    Thanked 8 Times in 8 Posts
    Predefinito

    Grazie per l'aiuto. vediamo cosa riesco a combinare.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •