요즘은 학교에서 안드로이드 개발자 강의를 듣고 있는데,
정말 배우면 배울수록 객체 지향 개념이 너무나 재밌다는 생각을 많이 하게 된다.
이번 포스팅에서는 학교에서 실습한 예제 중 하나인,
intent를 이용한 앱과 앱 사이의 정보 교환에 대해서 알아보도록 하겠다.
예제에서는 Contact Picker라는 앱을 만들어서
버튼을 눌렀을 때 주소록이 호출되고,
주소록에서 선택한 사람의 이름이 다시 앱으로 전달되어
화면상에 선택한 사람의 이름이 보여지는 기능을 구현했다.
위와 같은 에뮬레이터에서 실행한 Contact Picker의 모습이다.
전체적인 레이아웃을 보면,
맨 위에 텍스트 뷰로 제목이 하나 있고
중간 영역은 비워진 상태의 텍스트 뷰이며
맨 아래에는 Pick Contact라는 버튼이 있다.
연락처 호출 과정을 살펴보면
ContactPickerTester라는 Activity와 ContactPicker라는 Activity의 두 가지가 작동하는데,
(1) ContactPicerTester에서 Android에 Contact를 호출해달라는 intent를 전달하면
(2) Android에서 그 intent를 받아 ContactPicker에 전달하게 된다.
(3) ContactPicker는 주소록에 Uri를 사용하여 접근하고, 해당하는 사람을 선택하게 된다.
(4) 주소록은 ContactPicker에게 선택한 사람에 대한 Cursor를 전달하고
(5) 전달받은 Cursor를 통해 ContactPicker가 Android에게 intent를 발송하게 되고
(6) Android는 이 intent를 다시 ContactPickerTester에게 전달하게 된다.
(7) 이때의 intent는 ContactPicker에게 받았던 group intent가 아니라, 특정 item에 대한 intent이므로
ContactPickerTester가 특정 item을 읽어 Uri를 주소록으로 발송할 수 있게 된다.
(8) 그러면 이 Uri를 받은 주소록이 해당되는 사람의 이름을 ContactPickerTester에게 호출할 수 있게 된다.
전체적으로 약간 복잡한 과정을 거치게 되는데,
이러한 이유는 각각의 Activity가 주소록이라는 Provider나 Activity 간의 송수신을 할 때
intent와 Cursor를 사용해야 하기 때문이다.
코드를 직접 짠 것이 아니기 때문에 그대로 옮길 수는 없으나,
이 예제의 코드를 잘 살펴보면 intent를 생성하고 이를 받아서 처리하는 일련의 과정이
직관적으로 잘 짜여있다.
'Thoughts' 카테고리의 다른 글
블로그에 대한 생각 (0) | 2019.09.13 |
---|---|
최근에 벌어지고 있는 일들 (0) | 2013.08.23 |
박성필 교수님 "지식 재산 소개 및 이슈" (0) | 2011.08.01 |
"우리 대화합시다!" - YIPL 자체세미나 강연 (0) | 2011.07.27 |
"사회, 철학적 관점으로 본 지식재산권법" - 김형진 변호사님 강연 (0) | 2011.07.27 |