[kotlin] 코틀린 모듈 간의 통신 방법

코틀린은 안드로이드 앱 개발을 위해 자주 사용되는 프로그래밍 언어입니다. 앱은 종종 여러 개의 모듈로 구성되어 있으며, 이들 간에 데이터를 주고받아야 하는 경우가 있습니다. 이번 블로그 포스트에서는 코틀린 모듈 간의 통신 방법을 알아보겠습니다.

1. Intent를 사용한 통신

안드로이드에서 모듈 간 통신을 위해 가장 일반적으로 사용되는 방법은 Intent를 이용하는 것입니다. Intent는 메시지를 포장하고 앱 간에 전달할 수 있는 메커니즘을 제공합니다.

아래는 모듈 A에서 모듈 B로 데이터를 전달하는 예시 코드입니다.

// 모듈 A의 코드
val intent = Intent(this, ModuleBActivity::class.java)
intent.putExtra("key", value)
startActivity(intent)

모듈 B에서는 전달받은 데이터를 처리할 수 있습니다.

// 모듈 B의 코드
val value = intent.getStringExtra("key")
// 전달받은 데이터 처리

2. 인터페이스를 사용한 통신

인터페이스를 사용하면 모듈 간의 통신을 더 유연하게 할 수 있습니다. 모듈 간에 정의한 인터페이스를 구현하고 해당 인터페이스를 통해 데이터를 주고받을 수 있습니다.

아래는 인터페이스를 사용한 모듈 간 통신의 예시 코드입니다.

// 공유 인터페이스 정의
interface CommunicationInterface {
    fun sendData(data: Any)
    fun receiveData(data: Any)
}

// 모듈 A에서 인터페이스 구현
class ModuleA : CommunicationInterface {
    override fun sendData(data: Any) {
        // 데이터 전송
    }

    override fun receiveData(data: Any) {
        // 데이터 수신
    }
}

// 모듈 B에서 인터페이스 구현
class ModuleB : CommunicationInterface {
    override fun sendData(data: Any) {
        // 데이터 전송
    }

    override fun receiveData(data: Any) {
        // 데이터 수신
    }
}

3. 이벤트 버스를 사용한 통신

이벤트 버스는 앱의 다양한 구성 요소 간에 이벤트를 통해 통신할 수 있는 패턴입니다. 이벤트를 발행하고 구독자가 해당 이벤트를 수신하여 처리하는 방식으로 동작합니다.

아래는 이벤트 버스를 사용한 모듈 간 통신의 예시 코드입니다.

// 이벤트 클래스 정의
class DataEvent(val data: Any)

// 모듈 A에서 이벤트 발행
EventBus.getDefault().post(DataEvent(data))

// 모듈 B에서 이벤트 수신
@Subscribe
fun onDataEvent(event: DataEvent) {
    val data = event.data
    // 데이터 처리
}

위의 코드에서 EventBus는 greenrobot의 EventBus 라이브러리를 사용한 예시입니다.

결론

코틀린 모듈 간의 통신은 Intent, 인터페이스, 이벤트 버스를 사용하여 구현할 수 있습니다. 각 방법은 다양한 상황에 따라 효과적으로 사용될 수 있으므로, 개발의 목적과 요구사항에 맞게 선택하여 사용하면 됩니다.

더 자세한 내용은 공식 Kotlin 문서를 참조하시기 바랍니다.