2012-07-22 3 views
0

Mes données sont chargées depuis Internet, donc j'utilise AsynTask(). La méthode execute() permet d'ouvrir d'abord un objet progressDialog, puis de charger les données en arrière-plan. cela fonctionne, cependant, il faut parfois trop de temps pour charger les données, donc je veux annuler le chargement, et voici le problème: quand je clique sur le bouton précédent, la boîte de dialogue se ferme mais après le chargement en arrière-plan, censé faire après le chargement, par exemple commencer une nouvelle intention. est-il possible que je puisse annuler le chargement correctement ???Comment annuler l'exécution d'une méthode lorsque le bouton "Précédent" est cliqué en android

new GridViewAsyncTask().execute(); 
public class GridViewAsyncTask extends AsyncTask<Void, Void, Void> { 
    private ProgressDialog myDialog; 

    @Override 
    protected void onPreExecute() { 
     // show your dialog here 
     myDialog = ProgressDialog.show(ScrollingTab.this, "Checking data", 
       "Please wait...", true, true); 

    } 

    @Override 
    protected Void doInBackground(Void... params) { 
     // update your DB - it will run in a different thread 
     loadingData(); 

     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     // hide your dialog here 
     myDialog.dismiss(); 
} 
+0

http://stackoverflow.com/questions/2735102/ideal-way-to-cancel-an-executing-asynctask ce lien est beaucoup mieux! –

Répondre

1

Déclarez votre AsyncTask comme asyncTask = new GridViewAsyncTask();

puis de l'exécuter comme vous l'avez fait avant (asyncTask.execute();) et d'annuler il:

asyncTask.cancel(); 

Ajoutez la méthode onCanceled à votre classe AsyncTask et remplacez-la. Peut-être pour montrer un journal ou autre chose!

@Override 
protected Void onCancelled() { 
    // Your Log here. Will be triggered when you hit cancell. 
} 
Questions connexes