2011-09-19 5 views
1

AsyncTask를 사용하여 화면에 표시되는 서버에서 일부 데이터를 검색하고 있습니다. 문제는 데이터가 저장되는 동안 진행 상황 표시 줄이 표시되는 동안 기기의 방향을 변경하면 UI가 업데이트되지 않는 것입니다.Android 오리엔테이션 변경 후 AsycTask에서 UI 업데이트

이 내가이 상황을 처리하기 위해 다음과 같은 짓을 내 AsychTask의 인스턴스를 반환

가) 재정의 onRetainNonConfigurationInstance을에서 onCreate 방식에이를 검색 할 수 있습니다. b)는 내 응용 프로그램이 충돌하지 않습니다, 나는 화면에 오류를 얻을하지 않습니다

위젯에 무효화 방법을 호출 AsycTask D의 postExecute)에서 된 setContentView를 호출하여 휘발성 C로 내 위젯) 전체 U를 다시 그리기를 선언 UI는 업데이트되지 않습니다. 디버그 모드에서 코드를 실행했습니다. UI를 업데이트하는 코드가 실제로 실행되지만 아무 것도 수행하지 않습니다.

로그에 내 활동이 창을 유출했다는 오류가 나타납니다.

내가하고있는 일을 잘못하고 있거나하지 않는 제안.

+0

죽은 활동의 UI 개체에 AsyncTask가 걸려 있습니까? 당신의 postExecute() 코드가 새로운 액티비티가 아닌 이전 액티비티에서 작동하는 것 같아요. –

+1

일부 코드가 도움이 될 것 같아요 ... – Vic

답변

1

문제는 거의 AsyncTask가 이전 활동에 대한 참조를 유지하고있는 것이 확실합니다. (아마도 내부 클래스일까요?) 이것은 놀랍도록 어려운 문제입니다. Google 그룹의 this thread에 대한 문제와 해결 방법에 대한 훌륭한 토론이 있습니다. 이 문제를 해결할 수있는 코드를 찾으려면 Lance Nanek의 대답을 찾으십시오.

문제는 AsyncTask에만 국한되지 않습니다. UI와 상호 작용해야하는 백그라운드 스레드에서 발생할 수 있으며 구성 변경과 함께 발생하는 파괴/시작 라이프 사이클 이벤트에서도 살아남 아야합니다.

관련 문제