안드로이드 코딩시 도움이 되는 대표적 오픈소스 프레임워크/라이브러리인 RoboGuice와 AndroidAnnotations에 대한 비교 메모입니다.
1. RoboGuice (RG)
- Injection 대상 : View, Resource, 시스템서비스, POJO 등
- 향상된 유틸리티 클래스 제공 : RoboAsyncTask, Ln 등
- 액티비티 생명주기 Event 전달을 통한 모듈화 메커니즘 제공 : 액티비티에 대한 강한 커플링을 제거.
- Activity는 RoboActivity를 상속받아야 함
- Activity가 아닌 클래스에서도 안드로이드 컴포넌트 inject 가능
- 구글 Guice에 의존 : 강력하고 충실한 inject 기능 제공
- 런타임시에 inject 및 어노테이션을 처리하므로 성능하락 존재
- 용량 큼 : 590KB
2. AndroidAnnotations (AA)
- Injection 대상 : View, Resource, 시스템서비스, POJO(제한적) 등
- 다양한 유틸리티성 어노테이션 제공. inject외에 다양한 작업을 어노테이션을 통해 처리
: 쓰레드작업(UiThread, Background,..), 이벤트처리(Click, ItemClick,...), REST통신 등
- 컴파일 타임에 inject 및 어노테이션 처리한 자식클래스를 생성 : 런타임 성능하락 없음
- 특정 Activity 상속 필요없음
- java annotation processing 설정 필요
- 새 액티비티 클래스 작성후 Android Manifest.xml 수정이 필요 => 액티비티 클래스명 끝에 언더바를 추가해줘야함
: 예를들어 ".xxx.MyActivity" -> ".xxx.MyActivity_"
- 명시적으로 액티비티 사용시에 언더바 붙은 액티비티를 사용해야 함
- 용량 작음 : 53KB
* 참고자료
http://blog.springsource.org/2011/08/26/clean-code-with-android/
'Android' 카테고리의 다른 글
[안드로이드] RoboGuice와 AndroidAnnotations에서 View 주입 및 Click 어노테이션 처리 위치 (0) | 2012.04.18 |
---|---|
[안드로이드] RoboGuice 2.0 사용 환경에서 proguard 설정 (0) | 2012.04.16 |
[안드로이드] 라이브러리 프로젝트에 포함된 Aspect를 앱프로젝트에 적용하기 (0) | 2012.04.16 |
[안드로이드] ADT r17 사용시 프로젝트 구성 메모 (0) | 2012.04.16 |
[안드로이드] AspectJ 사용시 제약사항 (2) | 2012.04.10 |