2011-08-18 9 views
0

내 코드를 참조하십시오. 가능한 경우 내 progressDialog가 백그라운드에서 중간에 완료되면 화면이 멈 춥니 다 (아무 것도 표시되지 않고 logcat에 모든 로그가 표시됨) 배경 기능에서).asyncTask and progressDialog : Freeze

후, 오른쪽 끝 전에해서 ProgressDialog 다시 애니메이션 시작 몇 초 후에 종료 (기능이 완료되고, 그 결과는 일반적으로 표시)이 켰을

public class changeWall extends AsyncTask<Integer, Integer, Integer> { 
     protected Integer doInBackground(Integer... urls) { 
      int totalSize=0; 
      try { 

       if(s.loadBoolean() == false) 
       { 
        log("IF = false"); 
        log("tempLogin = "+tempLogin); 
        log("tempPassword = "+tempPassword); 
        getNewResponse(tempLogin,tempPassword); 
       if(needSave) 
       { 
       s.saveBoolean(true); 
       } 

       } 
       else 
       { 
       if(s.loadLogin()==null) 
       { 
        getNewResponse(tempLogin,tempPassword); 
       }else 
       { 
        getNewResponse(s.loadLogin(),s.loadPassowrd()); 
       } 
       } 
       parser.setLol(0); 

       parser.startParse(RESULT_STRING); 

      log("end parse"); 
      } catch (ClientProtocolException e) { 
       log("internet connection lost"); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       log(" connection lost"); 
      } 
      log("count = "+parser.getFacebookId(1)); 
      publishProgress(); 
      totalSize=1; 
      log("end of start"); 
      return totalSize; 
     } 

     protected void onProgressUpdate(Integer... progress) { 
      log("wall click ON PROGRESS UPDATE"); 
      wall.setBackgroundResource(R.drawable.tabbuttonon); 
      messages.setBackgroundResource(0); 
      activity.setBackgroundResource(0); 
      profile.setBackgroundResource(0); 
      l1_1.setBackgroundResource(R.drawable.tabbuttononleft); 
      l1_2.setBackgroundResource(R.drawable.tabbuttononright); 
      l2_1.setBackgroundResource(0); 
      l2_2.setBackgroundResource(0); 
      l3_1.setBackgroundResource(0); 
      l3_2.setBackgroundResource(0); 
      l4_2.setBackgroundResource(0); 
      l4_2.setBackgroundResource(0); 
      wall.setTextColor(Color.BLACK); 
      messages.setTextColor(Color.WHITE); 
      profile.setTextColor(Color.WHITE); 
      activity.setTextColor(Color.WHITE); 

      try { 
       loadWall(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 

      } 
       wallProgres.dismiss(); 
     } 

     protected void onPostExecute(Long result) { 
      if(result==1) 
      { 
       log("end WallChange"); 

      } 
     } 
    } 

심플 맵 :

----start progress(progress.show()) 
----start function 
--- animation (progressDialog) 
---animation(---) 
---animation(---) 
---FREEZ 
---FREEZ(Function steel working normal, progressDialog in freeze mode) 
---animation 
---end function 
---progress.dismis();// 

비슷한 문제는 여기에 있습니다. (이 문제는 내 문제이지만 다운로드는하지 않습니다.) Freezing UI Thread with AsyncTask 감사합니다.

+0

들에서, wallChanges.dissmis()가 정상 .. 오류가 아닙니다 여기에, 어쩌면 단지 바로이 오류를 설명 할 수없는 마감했다. 그러나 기능의 중간 작업 화면은 그냥 멈 춥니 다. (로그 고양이는 정상적으로 작동했습니다.) 그러나 정지 모드 (애니메이션은 screenShot처럼 실행되지 않음)와 기능 진행 상태의 최종 작업에서 애니메이션이 다시 표시되고 닫힌 상태로 진행됩니다. 미안하다. – Peter

답변

0

그것은 정확하지만 onProgressUpdate가 실행되는 동안 호출 beacuse

wallProgres.dismiss(); 
in onPostExecute rather than in onProgessUpdate method. 

을 배치하지 않을 수 있습니다이 줄 onPostExecute에서

wallProgres.dismiss(); 

() 메소드

protected void onPostExecute(Long result) { 
      if(result==1) 
      { 
       log("end WallChange"); 
       wallProgres.dismiss(); 
      } 
     } 
1

을 추가하는 듯했으나 onPostExecute는 후 호출 실행.

는 희망이 도움이 ..

1

곳이 줄 "wallProgres.dismiss()"onPostExecute().

protected void onPostExecute(Long result) { 
       if(result==1) 
       { 
        log("end WallChange"); 

       } 
       if(wallProgress.isShowing()) 
         wallProgres.dismiss(); 
     }