오늘은 JuranoSaurus의 두 번째 강의인 AndroidAnnotations Sample Application 둘러보기 입니다.
AndroidAnnotations가 적용된 간단한 Sample Application 코드를 함께 둘러보며 적용 전 후의 코드를 비교해보며 장, 단점 및 특징을 살펴봅시다^_^!
JuranoSaurus Project Team. 김성근 김태희 서주리
9. Sample
Application
우리가 익숙하게 볼 수 있는 어플리케이션의 코드였습니다.
여기에 AndroidAnnotations를 적용하면 어떻게 될까요?
https://github.com/JuranoSaurus/SampleChatting/releases/tag/chatting-0.1.1
10. Activity에 AA를 다음과 같이
적용해 보았습니다.
먼저 눈에 띄는 건 라인 수의
감소입니다. (135 -> 101 라인)
그리고 onCreate()에서의
findViewById()호출이 없다는 것을
알 수 있습니다.
좀 더 자세히 보면, Button 필드의
선언조차 없다는 것을 알 수
있습니다.
기존 부분에서 가장 if ~ else 가
많이 반복되고, 지저분한 부분인
BroadcastReceiver 부분이 눈에
띄게 바뀌었습니다.
특정 Action에 대해 메소드 형태로
관리되는 것을 확인할 수 있습니다.
11. Service와 AsyncTask에 AA를
다음과 같이 적용해 보았습니다.
AsyncTask에 있던 빨간 박스
부분의 코드들이 Service로
합쳐졌음에도 불구하고, 라인 수는
오히려 줄어들었습니다.
(93 + 72 -> 78 라인)
또, 앞쪽의 Activity와 마찬가지로
BroadcastReceiver 부분이 눈에
띄게 깔끔해졌습니다.
그러면 POST 요청을 하는 부분은
어디에 명시되어 있을까요?
12. Post 요청하는 부분이 Interface로 바뀐 것을 볼 수 있습니다.
단지 annotation이 적용된 메소드를 선언하는 것만으로 요청을 보낼 수 있습니다.
13. 패키지 모습의 변화입니다. 재부팅시 사용할 ChatWaker가 삭제된 것과,
AsyncTask인 RestProtocol이 AA적용 이후 Interface로 변화된 것 외에 큰 차이점은
없습니다.
15. Generated Code
답은 바로 generate된 코드입니다. APT가 위와 같이 annotation을 처리하여 코드를
생성해 줍니다. 아래쪽 빨간 박스 부분에 Action을 등록하는 부분이 보입니다.
지금은 가려져 보이지 않지만 onDestroy()에서는 unregisterReceiver()가 호출됩니다.