티스토리 뷰
오늘은 액티비와 액티비티간 통신에 대해서 다뤄보려고 합니다.
자세한 내용은 Android Developers를 참조하여 주시기 바랍니다.
https://developer.android.com/guide/components/activities.html
Android Developers에 있는 내용을 참고하자면
Activity는 일종의 애플리케이션 구성 요소로서, 사용자가 전화 걸기, 사진 찍기, 이메일 보내기 또는 지도 보기 등의 일을 하기 위해 상호작용할 수 있는 화면을 제공합 니다. 액티비티마다 창이 하나씩 주어져 이곳에 사용자 인터페이스를 끌어올 수 있습니다. 이 창은 일반적으로 화면을 가득 채우지만, 작은 창으로 만들어 다른 창 위에 띄울 수도 있습니다.
라는 것이 Activity의 정의입니다.
다시말해 우리가 앱을 사용할때 화면에 나타나는 화면들을 액티비티라고 생각하시면 됩니다.
정확히는 해당 화면을 띄워주는 보드라고 생각하셔도 됩니다.
액티비티의 핵심기능 2가지를 뽑아보자면
1. 레이아웃 및 UI 표시
2. 이벤트 처리
가 될 수 있습니다.
액티비티에 레이아웃을 탑재하는 함수는 oncreate()안에 있는
함수에서 지정된 레이아웃을 호출한 액티비티에 붙여줍니다.
액티비티는 새로 생성될 시 이전의 액티비티를 종료하지 않는다면
이전 액티비티 위에 쌓이는 형태로 새로운 액티비티가 실행됩니다.
만약 액티비티가 많이 사용되는 앱이라면 그 이전 액티비티를 끝내주는게
오버헤드가 적어집니다.
그리고
Activity는 객체지향의 관점에서 봤을 때 각각 별개의 클래스입니다.
이 말은 액티비티들 간의 우체부가 존재하여 Activity간 통신을 해주어야 한다는 것입니다.
이 우체부 역할을 해주는 것이 바로 Intent입니다.
다음은 Activity의 생명주기 입니다.
언제 어떤 Activity가 생성되고 언제 사라지는지에 대한 도식이라고 볼 수 있습니다.
여러개의 액티비티들이 있을 때 먼저 실행할 액티비티를 고르려면
AndroidManifest.xml 파일에서
<intent-filter></intent-filter>을 잘라내기하여 원하는 액티비티의 사이에
다음 코드와 같이 붙여넣기 합니다.
Intent 사용하기
Intent는 쉽게 생각하면 다른 Activity를 호출하여 준다고 볼 수 있으며
그와 동시에 그 Activity에 특정신호를 보낼 수 있습니다.
예를들면
친구들끼리 가위바위보를 한다고 칩시다.
특정 한 친구를 호출하여 신호를 보냅니다.
1. 친구를 호출한다.
2. 눈을 깜빡이면 주먹
3. 기침을 하면 가위
4. 머리를 긁으면 보자기
를 내는 식으로 호출을 하고 신호를 보낼 수 있습니다.
바로 Intent가 이러한 역할을 하여줍니다.
Intent에는 크게 두가지 종류가 있습니다.
Explicit Intent
Implicit Intent
Explicit Intent란
명시적 인텐트로써 다른 컴포넌트의 이름을 명확히 지목하여 호출 하는 것입니다.
예를들면
위와 같이 지목을 하여 호출을 합니다.
Implicit Intent란
암시적 인텐트로써 미리 정의된 액션(Action)을 지정하여 안드로이드에서 제공하는 기존 응용 프로그램을 실행합니다.
예를들면
위와 같이 사전에 정의된 액션을 호출하여 줍니다. 위의 예제는 전화걸기 Intent입니다.
Explicit Intent
1) Activity 호출하기
작업을 수행할 Activity를 지정하고 intent에 넣어줍니다.
this - 현재 activity
SecondActivity - intent를 보낼 activity
2) 정보전달과 호출
전달하기
putExtra는 크게 두가지로 이루어져 있습니다.
태그는 내가 보낸 데이터를 식별하기 위한 암구호(코드) 라고 보시면 됩니다.
그리고 두번째 파라미터로 내가 전송하고자 하는 데이터를 보냅니다.
String뿐만 아니라 객체, 숫자도 전달이 가능합니다.
정보 받기
정보를 받는것을 어렵지 않습니다.
intent를 생성하여 전달된 intent를 받은뒤
태그를 사용해서 데이터를 구분합니다.
그리고 나서 구분된 데이터를 저장합니다.
데이터를 가져오는 함수는 여러가지가 있습니다.
int Type : getIntExtra();
float Type : getFloatExtra();
double Type : getDoubleExtra();
String Type : getStringExtra();
Parcelable type : getParcelableExtra(); (객체전달)
이 중 Parcelable 타입은 19번 포스팅을 참조하시기 바랍니다.
3) 양방향 데이터 전송
양방향 데이터 전송을 쉽게보면 4단계 입니다.
(1) 정보전달- Activity1
(2) 정보수령 - Activity2
(3) 재전송할 정보 탑재 및 잘 수령했다는 신호 전달 - Activity2
(4) 잘 수령했다는 신호 인식 및 전송된 데이터 구분 - Activity1
정보전달
정보 수령
재전송할 정보 탑재 및 잘 수령했다는 신호 전달
잘 수령했다는 신호 인식 및 회신된 데이터 구분.
Implicit Intent
Implicit 인텐트는 안드로이드에서 제공하여주는 기존 응용프로그램을 실행합니다.
위 코드를 Activity에 넣어주시고
AndroidManifest.xml 파일에 들어가셔서 권한을 부여해주어야 합니다.
'Development > Android' 카테고리의 다른 글
9. 이미지 회전 및 확대 (0) | 2018.05.05 |
---|---|
8. Layout (0) | 2018.05.05 |
6. 계산기 만들기 - 2 (0) | 2018.05.05 |
6. 계산기 만들기 (0) | 2018.05.05 |
5. 안드로이드 스튜디오 한글 깨짐 문제 (0) | 2018.05.05 |
- Total
- Today
- Yesterday
- Linux
- Gradient descent algorithm
- Preprocessing
- gitgnore
- Markov Decision Process
- 강화학습
- Reinforcement Learning
- p-value
- Android Studio
- ausg
- #ab
- MySQL
- Confustion Matrix
- #ausg
- rl
- Memory segmetation
- Android
- 통계적 가설 검정
- AWS
- sequelize
- branch
- System
- git
- #handsonlab
- OS
- Reinforcement Learniing
- commands
- MDP
- #AWS
- Algorithm
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |