android-kotlin

kotlin 앱 구성요소

cheesecrust1008 2023. 8. 17. 17:19

kotlin의 앱 구성요소는 크게 네가지 유형이 있다.

 

1. 액티비티

 

2. 서비스

 

3. broadcast Receiver

 

4. 콘텐츠 제공자

 

액티비티

우선 액티비티는 사용자와 앱이 상호작용을 하기위한 진입점입니다. 

 

따라서 간단하게 앱의 화면 하나라고 보아도 무방한 것으로 보인다. 

 

사용자 플로우를 조절하기 위한 수단 등을 제공한다.

 

서비스

서비스는 백그라운드에서 앱을 계속 실행시키도록 하는 진입점이다. 

 

백그라운드에서의 서비스는 두 종류가 있는데, 

 

하나는 사용자가 인식할 수 있는 서비스 이고, 또 다른 하나는 인식 하지 못하는 서비스 이다.

 

따라서 인식 할 수 있는 서비스의 경우에는 그 서비스가 끊이지 않게 신경을 써 주어야 한다.

 

하지만, 인식 못하는 경우에는 조금 더 자유롭다.

 

broadcast receiver

broadcast receiver는 시스템의 정기적인 플로우 밖에서 이벤트가 발생하였을때, 이벤트를 앱에 전달하는 지원하는 요소이다.

 

따라서 또 다른 앱의 진입점이라고 할 수 있다. 

 

이는 Intent 객체로 전달 된다.

 

콘텐츠 제공자 

 

콘텐츠 제공자는 파일 시스템, SQLite 데이터베이스, 웹상이나 앱이 액세스할 수 있는 다른 모든 영구 저장 위치에 저장 가능한 앱 데이터의 공유형 집합을 관리합니다.

 

따라서 데이터 베이스와 유사하다고 생각 할 수 있는데, 시스템 설계 부분에서 몇가지 부분이 다르다. 

 

콘텐츠 제공자의 경우 URI로 데이터에 접근한다. 

 

따라서 앱에서 URI 네임스페이스에 넣을 데이터를 매핑할 방식을 결정하고, 해당 URI를 다른 엔터티에 전달할 수 있습니다

 

이런 구성 요소들로 이루어진 앱 들은 각각 독립된 프로세스로 실행된다.

 

따라서 시스템이 다른 앱에 대한 액세스를 제한하는 파일 권한을 가지고 각 앱을 별도의 프로세스에서 실행하기 때문에, 여러분의 앱은 다른 앱에서직접 구성 요소를 활성화할 수 없습니다.

 

다만 Android 시스템에서 다른 앱에 있는 구성 요소를 활성화하려면 시스템에 메시지를 전달하여 특정 구성 요소를 시작하고자 하는 인텐트를 밝혀야 합니다. 그러면 시스템이 대신 해당 구성 요소를 활성화해줍니다.

 

구성요소 활성화

 

구성요소 활성화의 경우 콘텐츠 제공자를 제외하고, Intent라는 비동기식 메세지로 활성화 합니다.

 

인텐트는 Intent 객체로 생성되며, 이것이 특정 구성 요소(명시적 인텐트)를 활성화할지 아니면 구성 요소의 특정 유형(암시적 인텐트)을 활성화할지 나타내는 메시지를 정의합니다.

 

액티비티와 서비스의 경우, 인텐트는 수행할 작업을 정의하며(예: 무언가를 보거나 보내는 작업), 시작되는 구성 요소가 알아야 할 것이 많이 있기는 하지만 그중에서도 작업을 수행할 데이터의 URI를 지정할 수 있습니다. 

 

구성요소 선언

 

구성요소 선언은 메니페스트 파일을 이용하여 선언한다.

 

다음 요소를 사용하여 모든 앱 구성 요소를 선언해야 합니다.

구성요소 기능 선언 또한 존재하는데, 앱의 매니페스트에서 액티비티를 선언하는 경우, 선택적으로 해당 액티비티의 기능을 선언하는 인텐트 필터를 포함시켜서 다른 앱으로부터의 인텐트에 응답하게 할 수 있습니다. <intent-filter> 요소를 해당 구성 요소의 선언 요소에 대한 하위 요소로 추가하면 구성 요소에 대한 인텐트 필터를 선언할 수 있습니다.

 

 

 

'android-kotlin' 카테고리의 다른 글

kotlin UDF  (0) 2023.08.21
kotlin 앱 아키텍처 가이드  (0) 2023.08.18
Kotlin @OptIn(ExperimentalMaterial3Api::class)  (0) 2023.08.15
선언형 UI  (0) 2023.08.10
kotlin jetpack compose 시작하기  (0) 2023.08.09