2012-10-01 2 views
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 
} 

때문에, 모두가 멋쟁이해야한다 :

답변

1

기본적으로 당신은 이런 식으로 뭔가를 할 수 있습니다.

관련 문제