CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: carotix con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 8 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 29 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 8 su 8
Discussione:

ProgressDialog dopo 2 secondi di attesa

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Androidiano


    Registrato dal
    Nov 2011
    Località
    Ivrea
    Messaggi
    133

    Ringraziamenti
    7
    Ringraziato 8 volte 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 alle 14:11

  2.  
  3. #2
    Androidiano


    Registrato dal
    Oct 2010
    Messaggi
    229

    Ringraziamenti
    27
    Ringraziato 77 volte 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

    Ringraziamenti
    0
    Ringraziato 24 volte 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
    133

    Ringraziamenti
    7
    Ringraziato 8 volte 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 alle 11:28

  6. #5
    Senior Droid


    Registrato dal
    Mar 2012
    Messaggi
    326
    Smartphone
    Samsung Galaxy S2

    Ringraziamenti
    0
    Ringraziato 24 volte 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
    133

    Ringraziamenti
    7
    Ringraziato 8 volte 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 alle 12:07

  8. #7
    Senior Droid


    Registrato dal
    Mar 2012
    Messaggi
    326
    Smartphone
    Samsung Galaxy S2

    Ringraziamenti
    0
    Ringraziato 24 volte 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
    133

    Ringraziamenti
    7
    Ringraziato 8 volte in 8 Posts
    Predefinito

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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy