1. Activity (액티비티)
액티비티는 사용자가 직접 보고 입력하는 화면을 담당하는 컴포넌트이다.
레이아웃을 화면에 그리기 위해서는 액티비티를 통해서만 가능함.
메이저 컴포넌트 중 하나인 액티비티를 위해서는 먼저 컴포넌트를 구성하고 있는 핵심 요소인 Context(컨텍스트)에 대한 이해가 있어야함
1-1 Context 란
액티비티, 서비스 등의 컴포넌트와 스피너, 리사이클러뷰와 같은 화면 요소를 사용하기 위해서는 Context 가 필요함.
Context는 시스템을 사용하기 위한 정보(프로퍼티)와 도구(메서드)가 담겨 있는 클래스.
대부분의 Context 는 컴포넌트가 실행될때 함께 생성되고, 생성된 컴포넌트가 가지고 있는 메서드를 호출해서
각각의 도구들을 사용할 수 있다.
또한, Activity는 Context를 상속받아 구현이 되며,
Activity 처럼 Context를 상속받은 컴포넌트들은 코드상에서 baseContext를 호출하는 것만으로 안드로이드의 기본 기능을 사용할 수 있다.
예로 Actitivity 안에서 startActivity() 메서드를 통해 다른 Activity 를 호출할 수 있는 이유가
모든 Activity가 startActivity()가 설계되어 있는 Context를 상속받아서 구현되어 있기 때문임
Application Context (Class)
애플리케이션과 관련된 핵심 기능을 담고 있는 클래스임
앱을 통틀어서 하나의 인스턴스만 생성됨.
액티비티나 서비스 같은 컴포넌트에서 applicationContext를 직접 호출해서 사용할 수 있는데
호출하는 지점과 관계없이 모두 동일한 Context가 호출됩니다.
Base Context (Class)
안드로이드의 4대 메이저 컴포넌트인
Activity,
Service,
Content Provider,
Broadcast Receiver
기반 클래스로 각각의 컴포넌트에서 baseContext 또는 this로 Context를 사용할 수 있고 컴포넌트의 개수만큼 Context도 함께 생성되기 때문에 호출되는 지점에 따라 서로 다른 Context 가 호출된다.
1-2 Intent 란
Activity를 실행하기 위해서는 단순히 Context가 제공하는 메서드를 호출하면 되는데, 이때 실행할 Activity 가 명시된 Intent 객체를 사용해서 해당 메서드에 전달해야함. 개발자가 어떠한 의도를 가지고 메서드를 실행할 것인지 를 Intent에 담아서 안드로이드에 전달하면 안드로이드는 해당 Intent를 해석하고 실행함.
안드로이드 프로그래밍을 하는 데 있어서 Context 와 Intent 에 대해서는 무적권 알고 있어야한다.
Activity를 실행하려면 기본적으로 Intent가 필요하지만, 프로젝트를 샐성할 때 함께 만들어지는 MainActivity는 특별한 설정을 하지 않아도 안드로이드에 자동으로 등록되고 실행된다. 하지만 MainActivity 외에 다른 Activity를 사용할 때는 인텐트에 새 Activity의 이름을 담아서 시스템에 전달해야함
Activity간에 데이터 통신
액티비티와 같은 컴포넌트는 인텐트로 실행 메시지도 전달하지만,
데이터도 주고받을 수 있다.
인텐트 내부에는 Bundle 이라는 a데이터 저장 공간을 이용하여 액티비티간 데이터 통신이 가능하다.
동작법은 Map 과 동일하게 (key, value) 로 작동함
댓글