J'essaie d'avoir un ProgressDialog
apparaissent lorsque le AsyncTask
commence à OnPreExecute(), faire quelque chose dans doInBackground()
, et fermer la ProgressDialog
en onPostExecute()
. Partout où je regarde cela est censé être facile et direct, mais je dois faire quelque chose de mal.Android - AsyncTask - OnPreExecute() court après doInBackground() est terminée
Chaque fois que je clique sur le Button
dans mon application et mettre à jour le AsyncTask
est exécuté l'application se bloque, attend un peu, puis le ProgressDialog
apparaît instantanément et disparaît, avec le travail doInBackground()
terminé. Je ne comprends pas pourquoi onPreExecute()
est exécuté après doInBackground()
, mais cela semble être exactement ce qui se passe ici. Voici le code:
public class UpdateStats extends AsyncTask<CatchAPI, Void, String[]> {
private ProgressDialog pdia;
private Context context;
private APIParser parser = new APIParser();
public UpdateStats(Context contexts) {
context = contexts;
}
@Override
protected void onPreExecute() {
pdia = new ProgressDialog(context);
pdia.setMessage("Loading...");
pdia.show();
super.onPreExecute();
}
@Override
protected String[] doInBackground(CatchAPI... api) {
String apiOutput = api[0].returnAPI();
return new String[] {
parser.getPoolName(apiOutput),
parser.getHashRate(apiOutput),
parser.getWorkers(apiOutput),
parser.getSharesThisRound(apiOutput)
};
}
@Override
protected void onPostExecute(String[] result) {
pdia.dismiss();
super.onPostExecute(result);
}
}
Et le onClickListener dans le MainActivity:
updateButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String[] text = null;
UpdateStats updater = new UpdateStats(context);
try {
text = updater.execute(api).get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
poolNameTV.setText(text[0]);
hashRateTV.setText(text[1]);
workersTV.setText(text[2]);
sharesThisRoundTV.setText(text[3]);
}
});
Parfait, c'était exactement cela. Merci! – DemonWav
Il ne me laissait pas l'accepter au début, il va maintenant. Merci encore. – DemonWav