AndroidAnnotations 라이브러리와 비교하여 RoboGuice의 단점으로 지적되고 있는 사항을 해결하기 위한 방안입니다.
런타임시에 리플렉션(reflection) 사용에 따른 성능하락
- 스마트폰 하드웨어 성능이 점점 강해지고 있으므로 앞으로 큰 문제는 안될 것임
또한 Dalvik VM의 리플렉션 성능이 점점 좋아지고 있음
- 게임처럼 대부분의 기능이 스마트폰 내에서 처리되는 앱이라면 문제될 수 있음
그러나 주로 네트워크를 통해 서버측에서 결과를 받아 단순히 표출하는 클라이언트 앱의 경우에는
응답시간의 대부분은 네트워크 소요시간이 차지하며, 폰 로컬의 리플렉션 처리가 차지하는 시간은 매우 작을 것으로 판단됨.
따라서 클라이언트 앱에서 RoboGuice의 런타임 리플렉션은 큰 문제가 아님.
앱 용량이 많이 커지는 문제
- RoboGuice를 사용하기 위해 필요한 guice-3.0.jar 파일과 roboguice-2.0.jar 파일의 크기를 합치면 거의 820KB임.
- 반면, androidannotations-2.5.jar 파일은 53KB에 불과함
- 그러나 실제로 apk의 용량이 820KB만큼 커지는 것은 아니며 ProGuard를 적절히 설정하면 apk 파일 크기가 생각보다 많이 늘어나지 않음
RoboActivity 상속에 따른 Activity 클래스의 유연성 부족
- AndroidAnnotations에는 Activity에 @EActivity 어노테이션을 선언만하면 되기 때문에 Activity가 다른 액티비티를 상속받는 것이 가능함
- 그러나 RoboGuice에서는 RoboActivity를 상속받아야 하므로 다른 액티비티를 상속받을 수 없음
- 따라서 AOP를 통해서 다른 액티비티를 상속받지 않고도 기능을 추가할 수 있는 방법을 적용하는 것을 고려
유틸리티성 어노테이션 부족
- AndroidAnnotations는 @ViewById 같은 injection용 어노테이션 외에 @Click, @Rest, @Background, @UiThread 등의 다양한 유틸리티성 어노테이션을 제공함
- 반면 RoboGuice는 코드를 줄여주는 이러한 유틸리티가 별로 없음
- AndroidAnnotations 소스를 참고하여 유틸리티성 어노테이션을 처리하는 AOP 애스펙트를 개발하여 적용하면 됨(별로 어렵지 않음)
- @Click : (공통) 액티비티의 setContentView() 메소드에 after 어드바이스로 처리
- @Background, @UiThread : 메소드에 around 어드바이스로 처리
- @Rest : ... 고민중...
'Android' 카테고리의 다른 글
[RoboGuice] 어노테이션 활용 (0) | 2012.04.29 |
---|---|
RoboGuice에서 Aspect에 injection하는 방법 (0) | 2012.04.29 |
[안드로이드] Non UI쓰레드에서 UI작업을 위한 올바른 Handler 생성법 (3) | 2012.04.19 |
[안드로이드] RoboGuice 2.0 메모 (0) | 2012.04.19 |
[안드로이드] RoboGuice와 AndroidAnnotations에서 View 주입 및 Click 어노테이션 처리 위치 (0) | 2012.04.18 |