반응형
문제발생
- 뷰페이저(ViewPager)에서 좌우로 화면 스크롤 시 이미지 로딩 지연 발생
- 테스트환경의 네트워크가 와이파이(WiFi)다 보니 코드 수정 후 LTE에서의 성능 차이를 뒤늦게 인지
- 원인발견
- 현재 이미지 다운로드 후 출력하는 기능을 AsyncTask를 이용하여 구현한 상태
- 안드로이드 버전 3.2(허니콤 Honeycomb)부터 AsyncTask.SerialExecutor에 의한 직렬 처리
→ 하나의 작업이 끝나야 다음 작업이 실행
- 해결방법
- AsyncTask가 병렬처리 되도록 변경
- .execute() 대신 .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)를 사용
- 참고소스
- 프래그먼트의 onStart()
1
2
3
4
5
6 |
@Override public void onStart() { super .onStart(); // 이미지 다운로드 실행 new ImageDownloadTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } |
- AsyncTask의 onPostExecute()
1
2
3
4
5
6
7
8 |
class ImageDownloaderTask extends AsyncTask { @Override protected void onPostExecute(Void result) { // 해당 프레그먼트에 존재하는 유일한 값을 로그출력 해보면 // 병렬처리되어 다운로드되고 있음을 확인 할 수 있다. super .onPostExecute(result); } } |
※ extends AsyncTask<Void, Void, Void>인데, SyntaxHighlighter에 버그가 있어서 생략함
반응형
'개발 > 안드로이드' 카테고리의 다른 글
Android Design Support Library 사용하기 (0) | 2016.07.14 |
---|---|
getDimension() 과 getDimensionPixelSize() 의 차이점 (0) | 2016.07.04 |
Firebase Remote Config 소개 (0) | 2016.06.29 |
[에러]com.android.dex.DexIndexOverflowException (0) | 2016.06.24 |
이클립스에서 Path for project must have only one segment. 오류 뜨는 경우 해결법 (0) | 2016.06.23 |
댓글