0

アクティビティの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()に

4

1 に答える 1

1

startActivity()メソッド内で呼び出しますonPostExecute()

于 2013-01-10T23:55:10.083 に答える