2010-12-10 9 views
0

Comment ajouter une barre d'onglets dans doinbackground asynctask dans android? ou comment exécuter l'écran de démarrage dans le fil? Je veux montrer une boîte de dialogue de progression ou un écran de démarrage jusqu'à ce que la barre d'onglets soit chargée à partir de la classe tabbar que j'appelle webservices et l'analyse de la valeur prend du temps, pour quelques minutes, je dois montrer progessbar ou splash screen. Quelqu'un peut-il me dire comment mettre en œuvre cela? Quelqu'un peut-il donner un exemple de code? J'ai essayé mais ca marche pasComment ajouter une barre d'onglets dans doinbackground asynctask dans android

dlg = ProgressDialog.show(this, "Working..", "Downloading Data...", true, false);  

Thread splashThread = new Thread() { 
     @Override 
     public void run() { 
      try { 

       sleep(100000); 



      } catch (InterruptedException e) { 
       // do nothing 
      } finally { 

      } 
     } 
    }; 
    splashThread.start(); 

Répondre

0

vous ne pouvez pas toucher quoi que ce soit du fil principal ui d'un fil d'arrière-plan, afin de le faire, vous devez utiliser un gestionnaire qui gère la synchronisation entre thread d'arrière plan et fil conducteur ui . Le meilleur moyen est de sous-classer l'AsyncTask, ce faisant, vous avez déjà des méthodes qui fonctionnent sur l'arrière-plan et les méthodes qui fonctionnent sur l'interface utilisateur. Avec cela, vous pouvez effectuer l'opération d'arrière-plan et affiche le résultat inmediatly ...

public class AsynchronousTask extends AsyncTask<Runnable, String, Result> { 

//method executed automatically in the ui event before the background thread execution 
@Override 
    protected void onPreExecute() { 
     //show the splash screen and add a progress bar indeterminate 
    } 

//method executed automatically in the ui event AFTER the background thread execution 
@Override 
    protected void onPostExecute(Result result) { 
     //hide the splash screen and drop the progress bar or set its visibility to gone. 
    } 

//method executed in a background event when you call explicitly execute... 
@Override 
    protected Result doInBackground(Runnable... tasks) { 
Result result; 
     if(tasks != null && tasks.length > 0){ 
      for (Runnable runnable : tasks) { 
       //publishProgress(...); 
       runnable.run(); 
           //result = ... 
       //publishProgress(...); 
      } 
     } 
     return result; 
    } 

} 

http://developer.android.com/reference/android/os/AsyncTask.html

lire la suite ici espérons que cette aide ...

+0

Quel est le type de retour, je donnerai donner l'exemple – mohan

+0

à l'intérieur des méthodes onPreExecute et onPostExecute vous devez montrer un AlertDialog, rafraîchir votre écran de démarrage, etc ... parce que ces méthodes s'exécutent dans le thread d'événement, si vous surchargez le onProgressUpdate (int progress), vous pouvez afficher un ProgressBar avec le mise à jour en cours. ce dernier cours également dans l'interface utilisateur. – Franco

Questions connexes