2014-09-30 4 views
2

나는 ProgressBarListFragment 내부 항목을 구현하기 위해 노력하고있어 내 응용 프로그램과 같이 작동,진행 바 목록보기 tiem 안드로이드

    응용 프로그램은이 개 파일
  1. 이 애플리케이션은 스레드를 시작합니다 다운로드 GCM을 통해 통지
  2. 파일을 다운로드하려면
  3. 스레드는 이 될 파일 이름과 파일 URL이있는 새 필드를 추가하여 DB를 업데이트하며 파일이 성공적으로 다운로드되었는지 여부를 보여주는 DB 필드가 있습니다. 아니. 다운로드가 완료되면
  4. 스레드가 DB에 저장 한 이름을 가진 각 파일의 진행과 함께 전역 변수를 업데이트됩니다 것은
  5. 스레드는 "을 완료 다운로드"를 행을 업데이트하고 알려드립니다 커서를 다시 불러올 데이터 세트 (커서 로더)
  6. 목록 조각에 다운로드 된 항목이 표시됩니다.

는 이제 ListFragment 측면에서, 응용 프로그램을 다운로드하고 난 항목의 진행을 얻을 수있는 방법이 경우, ListFragment 표시하게하는 실행 될 수 있을까? BindView에서 폴링해야합니까? 아래처럼, 정말 좋은 접근 방법이 아닙니다.

while(true) 
{ 
    updateProgressBar(globalVar.DownloadProgress); 
} 

또는 진행 상황을 항목에 알려야합니까? 그 방법을 잘 모르겠습니다. 커서를 다시로드하고 싶지 않습니다.

제가 명확하지 않은 경우 알려주십시오.

+0

ok 다운로드 진행이 listView 권한보다 다른 컨텍스트입니까? 다운로드 클라이언트에서 콜백에 액세스 할 수 없습니까? –

+0

다운로드 스레드는 처리기 스레드입니다. –

+0

파일의 크기를 미리 알고 있습니까? 그 정보를 데이터베이스에 저장합니까? – njzk2

답변

0

다운로드에는 인터넷 연결이 필요하므로 주 스레드에서는이 작업을 수행 할 수 없습니다. 멀티 스레딩에 AsyncTask을 사용하는 경우 onProgressUpdate()을 재정의해야합니다. AsyncTask을 사용하지 않는 경우 코드 수정을 고려해보십시오.

+1

주 스레드에서 파일을 다운로드하지 않습니다. 2를 확인하십시오. –