앱툴즈
46.♡.168.138
46.♡.168.129
46.♡.168.161
46.♡.168.136
46.♡.168.145
46.♡.168.162
46.♡.168.144
46.♡.168.140
115.♡.135.198
46.♡.168.139
 
게시물 88건
   
리스트 작업시에 기본적으로 알아두셔야 될점.
글쓴이 : 김병주                   날짜 : 2012-10-08 (월) 20:17 조회 : 5717
1. 리스트의 한 Row에 너무많은 layout을 담지 말라.
 
 리스트의 경우 커스터마이징이 되는 특징 때문에 많은 분들이 여러 레이어를 사용하여 꾸미시는걸
 볼수 있습니다.
 문제는 한 Row에 많은 Layout이 존재한다면 ListView는 이를 그리기 위해 레이아웃 갯수만큼 
 반복작업한다는것을 잊으시면 안됩니다.
 만약 많은 레이아웃이 들어가는 작업이라면 가급적 RelativeLayout을 사용하시어 작업하시기
 바랍니다. (많은 레이아웃이 들어간다는것은 자리를 잡기 위해 사용된다는 의미기도 하니까요.)
 
2. 리스트 한 Row마다 이미지가 포함 된다면, AsyncTask를 이용하라.
 
 리스트의 경우 주로 이미지가 포함된 Row를 만드시는 경우가 많으실 겁니다.
 이미지는 바로 보여주기 보다는 Lazy 기법을 이용하여, 처리하시기 바랍니다.
 만약 이미지 100개를 리스트에 셋팅해야된다면, 바로 100개를 셋팅하지 마십시오.
 어차피 한 화면에 보여지는 리스트의 갯수는 한정되어 있으므로, 한 화면에 최대 보여질 수 있는
 예상 갯수인 (테블릿을 포함하여) 20~30개정도만 미리 가져오십시오.
 이 작업은 AsyncTask를 이용해서 이미지를 bitmap에 셋팅하고,
 BitmapFactory.Options options = new BitmapFactory.Options();
 options.inSampleSize=2;
 등을 이용하여, 이미지를 줄인다음 imageView에 셋팅하십시오.
 추가로 Bitmap은 GC의 위험이 다분하니, Bitmap은 사용 후에 반드시 recycle()을 해주시기
 바랍니다.
 
3. 리스트가 갱신작업을 아주 빈번하게 할 때에는 매 갱신시 notifyDataSetChanged()를
   사용하지 마십시오.
 갱신작업이 많은 리스트의 경우 (채팅같은) 매 채팅입력 혹은 입력을 받을 시, 빈번하게
 리스트 갱신작업을 수행해야 됩니다. 하지만 이 notifyDataSetChanged()는 뷰를 다시 그리기 때문에
 UI에 안좋은 영향을 끼칩니다.
 adapter.setNotifyOnChange(true); 를 설정해 두시고, 일정 텀마다 새로 갱신작업을 해주시면 됩니다.
 또한 runOnUiThread는 아무리 Ui작업용 Thread라고 할지라도, 빈번한 갱신작업을 하게되면,
 폰성능에 따라 UIFreezing이나 Uilock 상태가 발생할 수 있습니다.
 
4. 리스트에 setAdapter 작업은 한번만 사용하자.
 간혹 리스트 갱신 시 마다 setAdapter를 반복적으로 사용하시는 분들이 계시는걸 자주 보게 됩니다.
 리스트에 setAdapter를 갱신시마다 하게 되면 GC발생확률이 높아집니다.
 리스트에는 setAdapter를 한번만 선언해주고 위의 setNotifyOnChange(true);를 설정하고
 필요시에  notifyDataSetChanged()를 Call 해주시면 됩니다.
 
 
 
* 글을 등록하실때 꼭 필요한 경우가 아니면 개인정보를 남기지 마세요 ^^ (연락처,이메일주소,주민등록번호 등)




김병주 님의 Tip&Tech 최신글 [더보기]


 
이경용 2012-10-09 (화) 11:06
코딩을 계속하다보면 내가 작성하는 코딩이 최선의 코딩인지 의문이 생기곤 하죠.
좋은자료 감사
   

게시물 88건
번호 제목 글쓴이 날짜 조회
88  <클라우드혁신센터> 12월 1일 SW 스타트업 창업 성공 전략 세미나 참석 요청 준모 11-30 2550
87  <클라우드혁신센터> 12월 1일 SW 스타트업 창업 성공 전략 세미나 준모 11-23 2483
86  개인개발자 SW개발환경 지원사업 안내 준모 10-28 2682
85  맥에서 구글 API key 등록방법 성기동 08-29 3575
84  [Agate Mobile] 앱 설치 없이 서버로부터 실시간 로딩 되어 동작하는 Cloud Native App 프레임워크입니다. 씨트린개발… 07-21 6325
83     [Agate Mobile] 앱 설치 없이 서버로부터 실시간 로딩 되어 동작하는 Cloud Native App 프레임워크입니다. 김은호 08-21 10877
82  자바 초보들에게 추천하는 기초 개념을 잡을 수 있는 책들 이경용 06-19 4719
81  [팁] 갤럭시 노트3 개발자 옵션 메뉴 찾기 ^^ 이경용 11-09 8627
80  앱템플릿을 제공하는 사이트 소개합니다. 씨트린개발… 08-21 11228
79  The content of the adapter has changed but ListView ... 에러 일반적 해결법. 김병주 04-16 14275
78  간단하게 패스워드에 숫자가 혼용되었는지 처리할 수 있는 메소드입니다. 김병주 01-31 5350
77  handler를 이용해 가변시간 반복 작업하기. 김병주 11-26 7257
76  String -> HEX 김병주 11-12 4639
75  리스트 작업시에 기본적으로 알아두셔야 될점. +1 김병주 10-08 5718
74  xml 직렬처리 고범석 09-24 3760
73  주소록 추가/삭제 감지해서 앱의 db추가/삭제하기. 김병주 09-24 11328
72  확장리스트가 3뎁스 이상이 될까? 안될까? +1 김병주 08-21 6504
71  ZXing 바코드 스캔부분 크기 조절하기. 김병주 08-06 13374
70  이클립스에서 레이아웃 xml 그래픽부분이 갑자기 안보일경우. +1 김병주 07-27 5330
69  간만에 글쓰네요 이번엔 launcherShortCut (바로가기 아이콘)입니다. 김병주 07-25 10894
 1  2  3  4  5  
 
 
 
Copyright ⓒ wwwold.androidstudy.co.kr. All rights reserved.