2011-09-19 2 views
0

나는 많은 것을보기 전에해야 할 활동이있다. 로드보기의 과정에서 나는 약간의 시간을 소비하고 그 시간에 할 수있는 다른 행동을 막는 비트 맵/드로어 블을로드해야합니다. 그래서 다른 스레드로 이동하기로 결정했습니다. 비동기 작업을 사용했지만, 이것은 물건을로드하는 견고한 방법이 아닙니다. 내보기가 표시된 후 1-2 초가 시작되는 상황이 있습니다! 너무 많은 시간을 소비하지 않고 ImageView에 할당 할 수있는 비트 맵/드로어 블을로드하는 방법이 있습니까?안드로이드에서 async를보기 위해 비트 맵/드로어 블을 로딩하는 방법

답변

1

작업을 실행하기 전에 UI 스레드를 차단하고있는 것 같습니다. 로거를 사용하여 작업이 언제 실행되는지 확인하십시오. 작업 다음 당신이보고해야하는 경우에 당신은 로딩이 너무 클 수있는 비트 맵, 실행 시간이 많이 걸릴 않는 경우

inSampleSize 옵션을 사용하여로드 이미지를 다운 샘플링 BitmapFactory.

0

AsyncTask 이미 사용중인 스레드 풀에서 작업을 실행하므로 스레드가 새 작업을 실행할 때까지 작업을 큐에 유지해야 할 수 있습니다. 나는 이것이 문제의 원인이라고는 생각하지 않지만.

사용자가보기 전에 모든 작업이 완료되었는지 보여주기 위해 실제보기 전에 진행 표시기를 표시하는 것이 좋습니다.

편집

당신은 또한) (task.get 사용할 수 있습니다; 아무것도 보이기 전에 비트 맵 로더가 완료 될 때까지 기다리는 다른 모든 작업을 실행 한 후에 UI 응답을 유지하려고 시도하십시오!

관련 문제