アクティビティの1つが呼び出すQueueTaskというAsyncTaskがあります。進行状況ダイアログが表示されている間、いくつかの操作を実行する必要があります。AsyncTaskが実行された後、インテントが作成され、新しいレイアウトとアクティビティに焦点が当てられます。
問題は、ダイアログが非常に速く点滅してから、インテントが呼び出されることです。操作が実行されている間、ダイアログは固執するはずですが、そうではありません。なぜくっつかないのですか?
注:doInBackgroundの実行には約300秒かかります。
アクティビティからの呼び出し:
QueueTask task = new QueueTask(date, roomNum, time, fieldInputUser, fieldInputCardNum);
task.execute();
Intent intent = new Intent(this, DatePickerActivity.class);
this.startActivity(intent);
アクティビティクラスで定義されたAsyncTask:
public class QueueTask extends AsyncTask<Void, Void, Void> {
private ProgressDialog progressDialog;
private Library lib;
private String date;
private int room;
private int time;
private String user;
private String id;
public QueueTask(String date, int room, int time, String user, String id) {
this.date = date;
this.room = room;
this.time = time;
this.user = user;
this.id = id;
}
@Override
protected void onPreExecute() {
lib = new Library();
progressDialog = ProgressDialog.show(ManageRoomActivity.this, "Queuing", "Queuing process");
}
@Override
protected Void doInBackground(Void... params) {
int timer = 300;
while(timer > 0) {
if(lib.roomAvailable(date, room, time)) {
lib.bookRoom(user, date, room, id, time);
return null;
}
android.os.SystemClock.sleep(1000);
timer --;
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
progressDialog.dismiss();
}
}
}
置くことで修正:
Intent intent = new Intent(ManageRoomActivity.this, DatePickerActivity.class);
ManageRoomActivity.this.startActivity(intent);
onPostExecute()に