私のアプリケーションでは、ユーザーがボタンを押してから5分待つ必要があります。私はこれがひどいと思うが、それだけで行くと知っている。進行時間バーには、5分間の待機時間が残ります。asynctaskを使用してカウントダウンするプログレスバーを表示するにはどうすればよいですか?
カウントダウンにはテキストビューのCountDownTimerを使用していましたが、私の上司は見た目の良いものを求めていました。したがって、進捗バーの推論。そして、あなたはこのような何かを行うことができ
私のアプリケーションでは、ユーザーがボタンを押してから5分待つ必要があります。私はこれがひどいと思うが、それだけで行くと知っている。進行時間バーには、5分間の待機時間が残ります。asynctaskを使用してカウントダウンするプログレスバーを表示するにはどうすればよいですか?
カウントダウンにはテキストビューのCountDownTimerを使用していましたが、私の上司は見た目の良いものを求めていました。したがって、進捗バーの推論。そして、あなたはこのような何かを行うことができ
..
public static final int DIALOG_DOWNLOAD_PROGRESS = 0;
private ProgressDialog mProgressDialog;
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DIALOG_DOWNLOAD_PROGRESS:
mProgressDialog = new ProgressDialog(this);
mProgressDialog.setMessage("waiting 5 minutes..");
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
mProgressDialog.setCancelable(false);
mProgressDialog.show();
return mProgressDialog;
default:
return null;
}
}
進捗状況を更新するために、非同期タスクを書く...
private class DownloadZipFileTask extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
showDialog(DIALOG_DOWNLOAD_PROGRESS);
}
@Override
protected String doInBackground(String... urls) {
//Copy you logic to calculate progress and call
publishProgress("" + progress);
}
protected void onProgressUpdate(String... progress) {
mProgressDialog.setProgress(Integer.parseInt(progress[0]));
}
@Override
protected void onPostExecute(String result) {
dismissDialog(DIALOG_DOWNLOAD_PROGRESS);
}
}
これはあなたの目的を解決する必要があり、それは文句を言わないでもUIのトレッドをブロック..
あなたは 'setProgress()'で好きなように進捗を設定できます。それを更新したいときはいつでもそれを呼び出してください。 – Geobits
設定されている時間が偽のプログレスバーになったら...最後の5分のGIFかもしれない。 – NightSkyCode
'AsyncTask'のドキュメントから... **" AsyncTasksは短時間の操作(理想的には数秒)に理想的に使用するべきです。 "** - 本当に5分のAsyncTaskを実行すべきではありません – Squonk