1
한 위치에서 다른 위치로 파일 묶음을 복사해야한다고합니다. 이것은 AsyncTask에서 할 것이므로 작업이 진행되는 동안 progressBar를 쉽게 표시 할 수 있습니다.실행 가능한 스레드를 일시 중지하고 사용자 입력 대기
그러나 복사중인 파일 중 하나가 이미 새 위치에 있다고 가정하면 asynctask를 일시 중지하고 건너 뛰거나 덮어 쓰는 경고 대화 상자를 표시 할 수 있습니까?
asynctask 내부에서 가능한 것이 무엇인지 이해했기 때문에. 그러나 똑같은 것을 성취하는 현명한 방법이 있습니까? 또는 1000+ 파일 일 가능성이있는 목록을 살펴보고 이전 위치가 새로운 위치에 있는지 확인해야합니까?
가장 효율적인 방법은 무엇입니까? publishProgress
는 메인 스레드에서 onProgressUpdate
실행하게
public ? doInBackground(?... ?s) {
while (shouldCopy) {
while (needUserVerfication)
if (!verifying)
publishProgress(NEED_USER_VERIFICATION);
else
// ...
}
}
public void onProgressUpdate(Integer... ints) {
switch (ints[0]) {
case NEED_USER_VERIFICATION:
AlertDialog.Builder adb = new AlertDialog.Builder(mContext);
adb.setTitle("Lisen!");
adb.setMessage("I need your input");
adb.setPostiveClickListener("Accept", this)
adb.setNegativeClickListener("Cancel", this)
adb.show();
case PUBLISH_PROGRESS:
// Update progress
}
}
public void onClick(DialogInterface dialog, int which) {
if (DialogInterface.POSITIVE == which) {
needUserVerification = true
} else {
needUserVerification = false
}
verifying = false
}
때문에, 모두가 멋쟁이해야한다 :