2011-11-18 2 views
1

100 개 이상의 버튼이있는 큰 활동이 있습니다. 하지만 일단로드되면 제대로 작동합니다. 그러나 문제는로드 중입니다. 실행 아이콘을 클릭하고 첫 번째보기를 얻는 데 10-12 초가 걸립니다. 첫 번째보기 전까지는 검정색 바탕에 회색 제목 표시 줄이 나타납니다.setContentView를 실행하는 데 오랜 시간이 걸림 (10-15 초)

적어도로드하는 동안 간단한 진행률 표시 줄이나 대화 상자를 표시하고 싶습니다. 하지만 setContentView를 실행하기 전에는 아무것도 표시 할 수없는 것 같습니다. 나는 내가 성공할 수있는 모든 것을 다 해봤다고 생각한다. 나에게 어떤 힌트 나 생각을 줄 수 있다면, 나는 감사 할 것이다.

는 UPDATE :

나는 극적인 해상도를 발견했다. 보기를로드하는 데 1 초가 걸립니다. 스플래시, 스레드 또는 비동기 작업을 전혀 사용하지 않았습니다. - 안드로이드 UI가 스레드로부터 안전하지 않기 때문에 BTW, UI에서 스레드 또는 비동기를 사용하지 마십시오. 문제는 버튼이 동일한 리소스를로드하기 위해 초기화가 필요한 사용자 정의 클래스를 기반으로한다는 것입니다. - 그래서 100 개 이상의 파일 작업이 setContentView에서 발생했습니다. 그 (것)들을 다만 단 하나 짐을 만드는 것은 나의 문제를 해결했다.

+0

ProgressDialog를 시도 했습니까? –

+0

동적으로 버튼을로드합니까? 아니면 100 개의 버튼이 XML로 정의되어 있습니까? –

+0

@Paul : 자바로로드 할 수 있습니까? –

답변

1

동일한 UI 스레드에서 데이터를로드 중이므로로드하는 동안 아무 것도 표시되지 않습니다. 별도의 실에서로드하려면 Async Task을 사용하십시오.

1) progressBar를 onPreExecute() 에 표시하십시오. 2) 데이터를 doInBackground()에로드하십시오. 어떤 UI 관련 물건을 여기 3), UI의 변경 사항을 업데이트하지 setContentView()가 호출되기 전에 사용을 onPostExecute()

+0

코드를 공유하십시오. –

0

에이 코드를 ProgressBar를 숨 깁니다. 어쩌면 도움이 될지도 모른다.

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 
requestWindowFeature(Window.FEATURE_PROGRESS); 

setProgressBarIndeterminateVisibility(true); 
setProgressBarVisibility(true); 
관련 문제