2013-05-08 2 views
1

채팅이로드되는 동안 progresscircle을 표시하려고합니다. 그래서 나는 보이지 않는 것으로 설정된 가시성을 넣었습니다. 이제는 가시성을 onPreExecute()으로 설정하고 onPostExecute()을 보이지 않게 설정했습니다. 동그라미가 표시되지만 채팅이 이미로드 된 후에 사라지지 않습니다. 누군가 내 실수를 말할 수 있습니까? :Asynctask에서 진행 상황 표시

@Override 
    public void onPreExecute() { 
     MainActivity.pbReadChat.setVisibility(ProgressBar.VISIBLE); 
    } 

    @Override 
    public Map<String, ArrayList<String>> doInBackground(String... strings) { 
     //... 
    return result; 
} 

public void onPostExecute(Map<String, ArrayList<String>> result) { 
    super.onPostExecute(result); 
    MainActivity.pbReadChat.setVisibility(ProgressBar.INVISIBLE); 
} 

편집 O : 지금은 사라하지만 채팅은 이미 내가 생각하는 내 비동기 클래스의 중요한 것들이다 누군가가 나에게

+0

대신 onCancelled()이 호출됩니다. 내 생각 엔 onPostExecute()가 호출되지 않습니다. 중단 점을 삽입하여 검사 할 수 있습니다. doInBackground()의 코드가 문제에 대해 더 많은 것을 밝힐 수 있습니다. –

+0

왜 호출되지 않습니까? 비동기가 다음 세 단계를 수행한다고 생각했습니다. onpreexecute, doinbackground 및 onpostexecute ... doinbackground가 끝나면 왜 원이 표시됩니까? – Phil

+1

doInBackground가 돌아 오면 onPostExecute()가 호출됩니다. 그렇지 않은 경우 (무한 루프 또는 예외 또는 취소 된 작업으로 인해) onPostExecute()가 호출되지 않습니다. –

답변

1
을 도울 수 있기를 바랍니다 그

doInBackground()에 부하를 한 후에는 바로 표시됩니다

doInBackground()이 반환되지 않기 때문에 onPostExecute()이 (가) 호출되지 않습니다. 아래 이유 중 하나로 인해 발생할 수 있습니다.

  1. 무한 루프.
  2. 무한 대기 입력.
  3. 미확인 예외입니다.
  4. cancel()AsyncTask에서 호출됩니다. 이 경우 onPostExecute()
관련 문제