2017-05-11 3 views
0

J'ai un processus qui prend un certain temps à s'exécuter, deleteImages. Je souhaite que le thread d'interface utilisateur soit bloqué pendant l'exécution de cette tâche. J'ai essayé de créer un AlertDialog et de le montrer avant que deleteImages ne démarre, donc il n'y a pas de temps de blocage inexpliqué. Cependant, même si j'appelle dialog.show() avant l'appel de deleteImages, la boîte de dialogue n'apparaît que lorsque deleteImages est terminé. Qu'est-ce que je fais mal?AlertDialog Display Lag

AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 
LayoutInflater inflater = getLayoutInflater(); 
View content = inflater.inflate(R.layout.deletion_dialog, null); 
builder.setView(content); 

AlertDialog dialog = builder.create(); 
dialog.show(); 

deleteImages(dataStringsToDelete); 
+1

Avez-vous essayez d'utiliser AsyncTask? –

+0

oui, AsyncTask avec progressDialog .... – Opiatefuchs

+1

s'il vous plaît montrer votre méthode deleteImages() ... – Opiatefuchs

Répondre

0

Essayez d'exécuter votre tâche dans votre deleteImages(dataStringsToDelete); async et cachez votre boîte de dialogue dans OnPostExecute()

Comme ceci:

new AsyncTask<Void, Void, Void> { 
protected Long doInBackground(Void... void) { 

    deleteImages(dataStringsToDelete); 

} 

protected void onPostExecute(Long result) { 
    dialog.dismiss(); 
} 
}.execute()