Android 컴포넌트는 무엇이 있을까?Framework/Android studio2023. 12. 5. 15:21
Table of Contents
728x90
1. Android 컴포넌트
컴포넌트(Component)는 소프트웨어 개발에서 독립적으로 동작하거나 재사용 가능한 부분을 말합니다. 안드로이드에서의 컴포넌트는 앱의 다양한 기능과 동작을 구성하는 단위로, 각각의 역할과 책임을 가지고 작동합니다. 안드로이드 앱은 여러 개의 컴포넌트로 구성되며, 각 컴포넌트는 특정한 기능을 수행하거나 역할을 담당합니다. 예를 들어, 액티비티는 사용자 인터페이스를 담당하고, 서비스는 백그라운드 작업을 처리하며, 브로드캐스트 리시버는 시스템 이벤트를 수신하고 처리합니다.
컴포넌트는 독립적으로 작동할 수도 있으며, 다른 컴포넌트와 상호작용하여 앱의 기능을 구현할 수도 있습니다. 예를 들어, 액티비티에서 다른 액티비티로 화면 전환을 할 수 있고, 서비스에서 데이터를 가져와 액티비티에 표시할 수도 있습니다. 안드로이드에서의 컴포넌트는 앱의 구조와 동작을 조직화하고, 재사용성과 모듈화를 높여줍니다. 이를 통해 앱을 보다 효율적으로 개발하고 유지보수할 수 있습니다.
2. Android 4대 컴포넌트
안드로이드에서 4대 컴포넌트라고 불리는 대표적인 친구들이 있다고 한다.
액티비티(Activity), 서비스(Service), 브로드캐스트 리시버(Broadcast Receiver), 콘텐트 프로바이더(Content Provider)
이렇게 4개를 안드로이드 4대 컴포넌트라고 부른다.
2-1. 액티비티(Activity)
사용자 인터페이스(UI)를 담당하며, 화면에 보이는 앱의 한 화면을 나타내준다. 다른 액티비티와 상호작용하거나 다른 앱과의 인텐트를 통해 데이터를 주고 받을 수 있다고 한다.
1. 컴포넌트를 생성합니다. 예를 들어, 액티비티를 생성하려면 새로운 Java 클래스를 생성하고 Activity 클래스를 상속받습니다.
2. 생성한 컴포넌트에 필요한 기능을 구현합니다. 예를 들어, 액티비티에서는 onCreate() 메서드를 오버라이드하여 초기 설정을 구현하고, 필요한 경우에는 다른 생명주기 메서드를 오버라이드합니다.
3. 필요한 경우, AndroidManifest.xml 파일에 컴포넌트를 등록합니다. 예를 들어, 액티비티를 등록하려면 <activity> 태그를 사용합니다.
4. 컴포넌트를 실행합니다. 예를 들어, 액티비티를 실행하려면 startActivity() 메서드를 호출하고, 인텐트를 전달합니다.
2-2. 서비스(Service)
백그라운드에서 실행되는 컴포넌트로, 사용자 인터페이스 없이 백그라운드 작업을 수행해준다. 예를 들어, 음악 재생, 파일 다운로드 등을 처리할 때 사용된다.
서비스(Service)는 백그라운드에서 오래 실행되는 작업을 수행하기 위한 컴포넌트입니다. 사용자 인터페이스를 제공하지 않으며, 다른 컴포넌트(액티비티, 브로드캐스트 리시버 등)에서 시작할 수 있습니다.
1. 새로운 Java 클래스를 생성하고 Service 또는 IntentService 클래스를 상속받습니다. Service는 모든 작업을 메인 스레드에서 실행하므로, 별도의 작업 스레드를 관리해야 합니다. 반면 IntentService는 별도의 작업 스레드를 자동으로 생성하므로, 간단한 백그라운드 작업에 적합합니다.
2. onStartCommand() 또는 onHandleIntent() 메서드를 오버라이드합니다. Service에서는 onStartCommand() 메서드에서 작업을 수행하고, IntentService에서는 onHandleIntent() 메서드에서 작업을 수행합니다.
3. 필요한 경우 onBind() 메서드를 오버라이드하여 바인드 서비스를 구현합니다. 바인드 서비스는 클라이언트-서버 인터페이스를 제공하며, 서비스에 직접 연결하여 상호작용할 수 있습니다.
4. AndroidManifest.xml 파일에 서비스를 등록합니다. <service> 태그를 사용하며, 필요한 경우 android:exported 속성과 android:permission 속성을 설정하여 서비스의 접근성을 제어할 수 있습니다.
5. startService() 또는 bindService() 메서드를 호출하여 서비스를 시작합니다. startService()는 서비스를 시작만 하며, bindService()는 서비스에 연결하고 상호작용합니다.
이렇게 서비스를 사용하여 백그라운드 작업을 수행할 수 있습니다. 서비스는 사용자 인터페이스 없이 오래 실행되는 작업에 적합하므로, 네트워크 요청, 파일 입출력, 계산 등의 작업에 사용할 수 있습니다.
2-3. 브로드캐스트 리시버(Broadcast Receiver)
시스템 또는 다른 앱으로부터 발생하는 브로드캐스트 메시지를 수신하고 처리하는 컴포넌트다. 예를 들어, 배터리 부족 경고, 네트워크 연결 상태 변경 등의 이벤트를 감지하고 알림을 처리해줄 수 있다.
브로드캐스트 리시버(Broadcast Receiver)는 안드로이드 시스템에서 발생하는 여러 이벤트나 정보를 받아 처리하는 컴포넌트입니다. 이들 이벤트에는 배터리 수준 변경, 시스템 부팅 완료, 네트워크 상태 변경 등이 포함됩니다.
1. 먼저 `BroadcastReceiver` 클래스를 상속받는 새로운 Java 클래스를 생성합니다.
2. 그 다음, `onReceive(Context, Intent)` 메서드를 오버라이드합니다. 이 메서드는 브로드캐스트가 수신될 때마다 호출됩니다. 여기서 `Context`는 현재 컨텍스트를, `Intent`는 수신된 브로드캐스트를 나타냅니다.
3. `AndroidManifest.xml` 파일에 브로드캐스트 리시버를 등록합니다. `<receiver>` 태그를 사용하며, `android:name` 속성에 리시버 클래스의 이름을, `android:exported` 속성에 리시버의 접근성을, `<intent-filter>` 태그와 `action` 태그를 사용하여 수신할 브로드캐스트의 종류를 지정합니다.
4. 브로드캐스트 리시버를 동적으로 등록할 수도 있습니다. 이 경우 `registerReceiver()` 메서드를 사용하며, `IntentFilter` 객체를 사용하여 수신할 브로드캐스트의 종류를 지정합니다.
5. 브로드캐스트를 전송하려면 `sendBroadcast()` 또는 `sendOrderedBroadcast()` 메서드를 사용합니다. `Intent` 객체를 사용하여 전송할 브로드캐스트의 종류와 데이터를 지정합니다.
이와 같이 브로드캐스트 리시버를 사용하면 다양한 시스템 이벤트를 감지하고, 이에 따라 앱의 동작을 조절할 수 있습니다. 브로드캐스트 리시버는 백그라운드에서도 동작하므로, 앱이 실행되지 않은 상태에서도 이벤트를 감지할 수 있습니다.
2-4. 콘텐트 프로바이더(Content Provider)
앱 간 데이터 공유를 위한 인터페이스로, 데이터를 관리하고 다른 앱에게 데이터를 제공하는 역할을 해준다. 주소록, 사진, 동영상 등의 데이터를 제공할 수 있습니다.
콘텐트 프로바이더(Content Provider)는 데이터를 관리하고 다른 앱과 공유하는데 사용되는 컴포넌트입니다. 콘텐트 프로바이더를 통해 앱 간에 데이터를 공유할 수 있으며, 이는 파일 시스템, SQLite 데이터베이스, 웹, 또는 앱이 메모리에 생성하는 어떤 데이터든 접근할 수 있도록 해줍니다. 콘텐트 프로바이더를 사용하는 방법은 다음과 같습니다:
1. `ContentProvider` 클래스를 상속받는 새로운 Java 클래스를 생성합니다.
2. 필요한 메서드를 오버라이드합니다. 이 메서드들은 `query()`, `insert()`, `update()`, `delete()`, `getType()` 등이 있습니다. 이들 메서드는 각각 데이터의 조회, 삽입, 수정, 삭제, 타입 반환 등을 담당합니다.
3. `AndroidManifest.xml` 파일에 콘텐트 프로바이더를 등록합니다. `<provider>` 태그를 사용하며, `android:name` 속성에 프로바이더 클래스의 이름을, `android:authorities` 속성에 고유한 권한 이름을, `android:exported` 속성에 프로바이더의 접근성을 지정합니다.
4. 콘텐트 프로바이더에 접근하려면 `ContentResolver` 객체를 사용합니다. 이 객체는 `query()`, `insert()`, `update()`, `delete()` 메서드를 제공하여 콘텐트 프로바이더의 데이터에 접근할 수 있습니다.
5. 콘텐트 프로바이더의 주소는 URI 형태로 표현되며, 이는 `content://<권한>/<경로>`와 같은 형태를 가집니다.
이와 같이 콘텐트 프로바이더를 사용하면 앱 간에 데이터를 공유하고, 데이터의 일관된 접근을 제공할 수 있습니다. 콘텐트 프로바이더는 데이터의 보안을 유지하면서 다른 앱과 데이터를 공유하려는 경우에 유용합니다.
728x90
'Framework > Android studio' 카테고리의 다른 글
코틀린을 이용한 Todo앱 (0) | 2023.12.11 |
---|---|
onBackPressed는 왜 사용을 권장하지 않을까? (0) | 2023.12.04 |
@Marty_ :: 소리 지르고 싶다.
쓰임 있는 사람이 되기 위해 노력 중입니다.