AndroidAnnotations
Sample Application 둘러보기
작성자 – 김태희 최종 수정일: 151202
Sample
Application
앞서 AndroidAnnotations의 구조를 살펴보았습니다.
실제 어플리케이션을 통해 어떻게 활용되는지
살펴보도록 하겠습니다.
Sample
Application
이번에 보여드릴 것은
메신저 형식의 UI를 가지고,
Rest 방식으로 구성된 에코 서버와
통신하는 어플리케이션!
Sample
Application
REST Server
Android
MainActivity
MessageReceiver
ChatService
MessageReceiver
RestTemplate
어플리케이션의 구조는 다음과 같습니다.
메신저의 구조를 본따 중간에 서비스를
두었습니다.
Sample
Application
주요 부분 로직만 간단히 집고 넘어가도록 하겠습니다.
https://github.com/JuranoSaurus/SampleChatting/releases/tag/chatting-0.1.0
UI를 제공하는 Activity입니다.
메시지를 받아 사용자에게 보여주고,
메시지를 보낼 수 있는 역할을 합니다.
통신을 담당하는 Service입니다.
사용자로부터 전달받은 메시지를
서버로 전달하는 역할을 합니다.
통신을 수행하는
AsyncTask입니다.
서버로 Post 요청을 보내고,
받은 응답을 사용자에게
전달합니다.
Sample
Application
우리가 익숙하게 볼 수 있는 어플리케이션의 코드였습니다.
여기에 AndroidAnnotations를 적용하면 어떻게 될까요?
https://github.com/JuranoSaurus/SampleChatting/releases/tag/chatting-0.1.1
Activity에 AA를 다음과 같이
적용해 보았습니다.
먼저 눈에 띄는 건 라인 수의
감소입니다. (135 -> 101 라인)
그리고 onCreate()에서의
findViewById()호출이 없다는 것을
알 수 있습니다.
좀 더 자세히 보면, Button 필드의
선언조차 없다는 것을 알 수
있습니다.
기존 부분에서 가장 if ~ else 가
많이 반복되고, 지저분한 부분인
BroadcastReceiver 부분이 눈에
띄게 바뀌었습니다.
특정 Action에 대해 메소드 형태로
관리되는 것을 확인할 수 있습니다.
Service와 AsyncTask에 AA를
다음과 같이 적용해 보았습니다.
AsyncTask에 있던 빨간 박스
부분의 코드들이 Service로
합쳐졌음에도 불구하고, 라인 수는
오히려 줄어들었습니다.
(93 + 72 -> 78 라인)
또, 앞쪽의 Activity와 마찬가지로
BroadcastReceiver 부분이 눈에
띄게 깔끔해졌습니다.
그러면 POST 요청을 하는 부분은
어디에 명시되어 있을까요?
Post 요청하는 부분이 Interface로 바뀐 것을 볼 수 있습니다.
단지 annotation이 적용된 메소드를 선언하는 것만으로 요청을 보낼 수 있습니다.
패키지 모습의 변화입니다. 재부팅시 사용할 ChatWaker가 삭제된 것과,
AsyncTask인 RestProtocol이 AA적용 이후 Interface로 변화된 것 외에 큰 차이점은
없습니다.
@Receiver
잠깐! 저는 BroadcastReceiver도
등록/해제한 적이 없어요! 어찌 된 일이죠?
Generated Code
답은 바로 generate된 코드입니다. APT가 위와 같이 annotation을 처리하여 코드를
생성해 줍니다. 아래쪽 빨간 박스 부분에 Action을 등록하는 부분이 보입니다.
지금은 가려져 보이지 않지만 onDestroy()에서는 unregisterReceiver()가 호출됩니다.
@Click
Button을 선언하지 않고 사용한 건 어떻게 된 걸까요?
Activity가 generate된
코드입니다.
우리는 Button을 선언한
적이 없지만, 생성된
코드에서는 선언을
비롯해 findViewById()와
setOnClickListener()를
통해 일반적인
안드로이드 코드로
바꾸어 주는 것을 볼 수
있습니다.
@More
즐거우셨나요? ^_^
다음 편부터는 각각의 컴포넌트들에 대한
사용법과 특징을 예시를 통해 알아보도록 하겠습니다.
Thank you

More Related Content

PPTX
Jurano강의 lec5 android_annotations_event_binding
PPTX
Jurano강의 lec1. AndroidAnnotations 시작하기
PPTX
반복적인 작업이 싫은 안드로이드 개발자에게
PPTX
Jurano강의 lec7 android_annotations_resource_injection_and_rest_api
PPTX
Jurano강의 lec4 android_annotations_application
PDF
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
PDF
JavaEE6 Tutorial - Java Message Service_sys4u
PDF
Java rmi 개발 가이드
Jurano강의 lec5 android_annotations_event_binding
Jurano강의 lec1. AndroidAnnotations 시작하기
반복적인 작업이 싫은 안드로이드 개발자에게
Jurano강의 lec7 android_annotations_resource_injection_and_rest_api
Jurano강의 lec4 android_annotations_application
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
JavaEE6 Tutorial - Java Message Service_sys4u
Java rmi 개발 가이드

Similar to Jurano강의 lec2. sample application 둘러보기 (20)

PPTX
3일차-닷넷 분산 기술의 이해 (인피니트 강의자료)
PDF
Androidpn guide-0.5.0-ko
PDF
RPC에서 REST까지 간단한 개념소개
PPTX
Aws lambda 와 함께 서버리스 서비스 만들기
PDF
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
PDF
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
PPTX
SpringMVC 전체 흐름 알아보기
PPTX
Open API 발표자료 - 김연수
DOCX
병렬처리
PPTX
220302 사내세미나_오정민 REST API와 크롤링
PDF
React native study
PPT
JCO 발표자로 - 누구도 들려주지 않는 Service 이야기
PDF
모두싸인의 AWS 성장기
PDF
RAD Studio 라이브바인딩 이해하기
PDF
서버학개론(백엔드 서버 개발자를 위한)
PDF
이야기를 서비스로 바꾸는 체계적인 방법: 디자인 모델 시스템 (SLADER Design Model System) (정상혁)
PDF
Sencha Ext JS 구축사례 : 코드스미스 툴즈
PDF
WAS의 동작과 WEB, Servlet, JSP_Wh apm
PDF
008. 싸이월드 앱스토어 api 소개 및 활용법 안내 sk컴즈 장원익 과장
PDF
2015년 제2회 동아리 해커 세미나 - 서버 개발자가 되기 위한 첫걸음 (25기 조성수)
3일차-닷넷 분산 기술의 이해 (인피니트 강의자료)
Androidpn guide-0.5.0-ko
RPC에서 REST까지 간단한 개념소개
Aws lambda 와 함께 서버리스 서비스 만들기
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
SpringMVC 전체 흐름 알아보기
Open API 발표자료 - 김연수
병렬처리
220302 사내세미나_오정민 REST API와 크롤링
React native study
JCO 발표자로 - 누구도 들려주지 않는 Service 이야기
모두싸인의 AWS 성장기
RAD Studio 라이브바인딩 이해하기
서버학개론(백엔드 서버 개발자를 위한)
이야기를 서비스로 바꾸는 체계적인 방법: 디자인 모델 시스템 (SLADER Design Model System) (정상혁)
Sencha Ext JS 구축사례 : 코드스미스 툴즈
WAS의 동작과 WEB, Servlet, JSP_Wh apm
008. 싸이월드 앱스토어 api 소개 및 활용법 안내 sk컴즈 장원익 과장
2015년 제2회 동아리 해커 세미나 - 서버 개발자가 되기 위한 첫걸음 (25기 조성수)
Ad

Jurano강의 lec2. sample application 둘러보기