일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스페인 여행
- 부산여행
- 제주 여행
- 바르셀로나 여행
- 공주 여행
- 서울 맛집
- 영화
- 맛집
- 스톡홀름 패스
- 오딩
- 홍콩 맛집
- 방콕여행
- 전주 여행
- 스몰웨딩
- 서울 여행
- 공주 맛집
- 전주 맛집
- 스웨덴 여행
- 강릉 맛집
- 홍콩여행
- 스톡홀름 여행
- 싱가포르 맛집
- 태국여행
- 세종시 맛집
- 결혼준비
- 제주여행
- 부산 맛집
- 제주 맛집
- 싱가포르 여행
- 세종 맛집
- Today
- Total
우리라이프
Context가 무엇인가? Intent가 무엇인가? 본문
요즘 기술면접을 보면 자주 물어보는 질문 중 하나는
Android에서 Context가 무엇인가? 와 Intent가 무엇인가? 에 대한 질문이다.
1. Context가 무엇인가?
일단 Android Developer 사이트에서 제공하는 Context에 대한 정보이다.
Context
public abstract class Context
extends Object
java.lang.Object | |
↳ | android.content.Context |
Interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and classes, as well as up-calls for application-level operations such as launching activities, broadcasting and receiving intents, etc.
위의 내용이 Context에 대한 내용이다.
간결하게 정리하면 Context는
어플리케이션 환경에 대한 전역 정보를 접근하기 위한 인터페이스로 어플리케이션에 관하여 시스템이 관리하고 있는 정보에 접근하고, Activity 실행, Intent 브로드캐스팅, Intent 수신등과 같은 안드로이드 시스템에서 제공하는 API를 호출할 수 있는 기능을 제공하는 클래스이다.
라고 정의할 수 있다.
2. Context 역할
Context는 Application이 생성될 때나 Android 각 컴포넌트들이 생성될 때 서로 다른 종류의 Context가 생성됩니다. 안드로이드 플랫폼 관점에서 Context는 다음과 같은 두가지 역할을 수행한다.
하나는 자신이 어떤 Application을 나타내고 있는지 Android System에 알려주는 ID 역할이고, 또 하나는 안드로이드에서 어플리케이션 관련된 정보에 접근하고자 할 때 통해야하만하는 ActivityManagerService에 접근할 수 있도록 하는 통로 역할을 합니다.
3. Context 종류.
Android Framework에서 Context는 2가지 종류가 있다. 하나는 Application Context이고, 다른 하나는 Activity Context이다.
Application Context : Application의 life-cycle에 접목되는 개념으로 하나의 애플리케이션이 실행되어 종료될 때까지 동일한 객체이다.
흔히 우리가 getApplicationContext() 함수를 사용해 얻는 객체를 의미한다. 또 하나 getApplication()이 있는데 이는 Application 객체를 참조하지만 Application 클래스는 Context 클래스를 상속받으므로 Application Context를 제공하는데 사용할 수 있다.
Activity Context : Activity life-cycle에 접목되는 개념으로 하나의 액티비티가 실행되어 종료될 때까지 즉 onDextroy() 된 경우 사라질 수 있는 객체이다. Activity에 대한 환경 정보들이 Context에 있고, 이 Context에 Intent를 통해 다른 Activity를 띄우면 액티비티 스택이 쌓이게 된다.
LoginActivity.this 는 Activity 를 상속받은 자신의 클래스를 참조하지만 Activity 또한 Context 클래스를 상속받으므로 Activity Context를 제공하는데 사용될 수 있다. getBaseContext()는 Activity Context를 제공한다.
4. Intent는 무엇인가?
일단 Android Developer 사이트에 나와있는 Intent에 대한 내용이다. Developer 사이트에 잘 나와 있기 때문에 따로 말을 첨부하지는 않아도 될거 같다.
Intent
는 일종의 메시지 객체입니다. 이것을 사용해 다른 앱 구성 요소로부터 작업을 요청할 수 있습니다. 인텐트가 여러 구성 요소 사이의 통신을 용이하게 하는 데에는 몇 가지 방법이 있지만, 기본적인 사용 사례는 다음과 같은 세 가지입니다.
- 액티비티 시작:
Activity
는 앱 안의 단일 화면을 나타냅니다.Activity
의 새 인스턴스를 시작하려면Intent
를startActivity()
로 전달하면 됩니다.Intent
는 시작할 액티비티를 설명하고 모든 필수 데이터를 담고 있습니다.액티비티가 완료되었을 때 결과를 수신하려면,
startActivityForResult()
를 호출합니다. 여러분의 액티비티는 해당 결과를 이 액티비티의onActivityResult()
콜백에서 별도의Intent
객체로 수신합니다. 자세한 정보는 액티비티 가이드를 참조하세요. - 서비스 시작:
Service
는 사용자 인터페이스 없이 백그라운드에서 작업을 수행하는 구성 요소입니다. 서비스를 시작하여 일회성 작업을 수행하도록 하려면(예: 파일 다운로드)Intent
를startService()
에 전달하면 됩니다.Intent
는 시작할 서비스를 설명하고 모든 필수 데이터를 담고 있습니다.서비스가 클라이언트-서버 인터페이스로 디자인된 경우, 다른 구성 요소로부터 서비스에 바인드하려면
Intent
를bindService()
에 전달하면 됩니다. 자세한 정보는 서비스 가이드를 참조하세요. - 브로드캐스트 전달:
브로드캐스트는 모든 앱이 수신할 수 있는 메시지입니다. 시스템은 여러 시스템 이벤트에 대해 다양한 브로드캐스트를 전달합니다. 예를 들어 시스템이 부팅될 때 또는 기기가 변경되기 시작할 때 등이 해당됩니다. 다른 여러 앱에 브로드캐스트를 전달하려면
Intent
를sendBroadcast()
,sendOrderedBroadcast()
또는sendStickyBroadcast()
에 전달하면 됩니다.
위 세가지 기능을 구현할 때 Intent를 많이 사용하며, 알고 있듯이 Activity끼리나 기타등등에서 작은 자료를 전달 할 때도 Intent를 활용하여 전달한다.
기타 자세한 내용은 Android Developer 사이트를 참조하길 바란다.
참조
Context 참조
https://developer.android.com/reference/android/content/Context.html
http://shnoble.tistory.com/m/57
Intent 참조
https://developer.android.com/guide/components/intents-filters.html?hl=ko
'IT > Android' 카테고리의 다른 글
멀티스레드 프로그래밍(Multi Thread Programming)에서 스레드 간의 커뮤니케이션(Communication) (0) | 2018.03.11 |
---|---|
[Android] Android Studio src, res 공용으로 사용하기 (0) | 2018.02.20 |