[Android] 안드로이드의 4대 컴포넌트

[Android] 안드로이드의 4대 컴포넌트

컴포넌트는 구성요소라는 뜻이다.

안드로이드 4대 컴포넌트는 안드로이드를 구성하는데 필요한 4가지 요소라는 뜻이다.

💡 특징

  • 각 컴포넌트는 독립적으로 존재한다.
  • 각 컴포넌트는 고유의 기능을 수행한다.
  • 각 컴포넌트는 인텐트를 통해서 서로 상호작용한다.

1) 액티비티 (Activity)

  • 사용자 인터페이스(UI) 화면을 나타내며, 앱의 사용자 상호작용을 담당한다.
  • 다른 액티비티로 전환하거나 시스템 이벤트에 응답할 수 있다.
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        // 액티비티 초기화 및 UI 설정
    }
}

2) 서비스 (Service)

  • 백그라운드에서 실행되는 비주얼 UI 없는 컴포넌트이다.
  • 오랜 시간 동안 실행되거나 백그라운드에서 작업을 수행할 수 있다.
class MyService : Service() {
    override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
        // 서비스가 시작될 때 실행되는 코드
        return START_STICKY // 서비스가 강제로 종료되었을 때 다시 시작
    }

    override fun onBind(intent: Intent?): IBinder? {
        return null
    }
}

3) 브로드캐스트 리시버 (Broadcast Receiver)

  • 시스템 또는 앱에서 발생하는 브로드캐스트 메시지를 수신하고 처리한다.
  • 예를 들어 배터리 부족, 네트워크 변경 등의 이벤트를 감지할 수 있다.
class MyReceiver : BroadcastReceiver() {
    override fun onReceive(context: Context?, intent: Intent?) {
        val action: String = intent?.action ?: return
        when (action) {
            Intent.ACTION_POWER_CONNECTED -> {
                // 전원 연결 이벤트 처리
            }
            Intent.ACTION_POWER_DISCONNECTED -> {
                // 전원 연결 해제 이벤트 처리
            }
        }
    }
}

4) 콘텐트 프로바이더 (Content Provider)

  • 앱 간 데이터를 공유하고, 데이터베이스에 대한 접근을 제공하는 인터페이스이다.
  • 주로 데이터를 관리하고 다른 앱이 이 데이터에 접근할 수 있도록 한다.
class MyContentProvider : ContentProvider() {
    override fun onCreate(): Boolean {
        // 콘텐트 프로바이더 초기화
        return true
    }

    override fun query(
        uri: Uri,
        projection: Array<out String>?,
        selection: String?,
        selectionArgs: Array<out String>?,
        sortOrder: String?
    ): Cursor? {
        // 데이터베이스에서 쿼리 수행
        return null
    }

    override fun insert(uri: Uri, values: ContentValues?): Uri? {
        // 데이터베이스에 데이터 삽입
        return null
    }

    // 나머지 메서드들도 오버라이드 해야 합니다.
}

© 2023. All rights reserved.

AgileCatch