안녕하세요. 제임스 입니다. 


안드로이드 개발자 사이트를 뒤지다가 좋은 팁을 하나 발견하여 공유 하고자 합니다. 


Making ListView Scrolling Smooth 라는 제목의 개발 가이드 입니다. (원문은 아래 링크 참조)

https://developer.android.com/training/improving-layouts/smooth-scrolling.html


위 링크의 글을 간단히 요약하면...


ListView 스크롤을 부드럽게 유지하기 위한 핵심은 애플리케이션의 메인 스레드를 무거운 작업으로 부터 자유롭게 유지 하는 것입니다. 즉, 저장장치내 검색, 네트워크 통신 또는 SQL 사용등의 무건 작업은 별도의 스레드을 이용하는 것이 키 포인트 입니다. 


사실 특별히 새로운 부분은 아닙니다. 

하지만, 안드로이드 개발을 이제 시작 하시거나 아직 공부하고 계신 분들이라면 꼭 알고 넘어가야 하는 부분이죠. 


메인 스레드에서 하지 않으면 어떻게 사용하느냐??!

바로 background thread 를 이용하는 것입니다. 


위 오피셜 사이트에서 제공하고 있는 샘플 코드 입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// Using an AsyncTask to load the slow images in a background thread
new AsyncTask<ViewHolder, Void, Bitmap>() {
    private ViewHolder v;
 
    @Override
    protected Bitmap doInBackground(ViewHolder... params) {
        v = params[0];
        return mFakeImageLoader.getImage();
    }
 
    @Override
    protected void onPostExecute(Bitmap result) {
        super.onPostExecute(result);
        if (v.position == position) {
            // If this item hasn't been recycled already, hide the
            // progress and set and show the image
            v.progress.setVisibility(View.GONE);
            v.icon.setVisibility(View.VISIBLE);
            v.icon.setImageBitmap(result);
        }
    }
}.execute(holder);
cs



이외 View Holder 를 이용하여 View 객체를 관리하는 것에 대한 언급도 있습니다. 


이와 관련 해서는 이후 ListView 를 다룰때 한번 정리 하도록 하겠습니다. 



 결론 


무건운 작업은 Main Thread 에서 하지 않고 Background Thread 에서 AsyncTask 를 이용하여 처리 한다 입니다. 




 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D



블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,