특정 Activity를 실행할 때, startActivityForResult
를 통해 실행하면, 실행된 Activity로 종료되고 원래 Activity로 돌아올 때 결과값을 전달받을 수 있다.
이런 동작은 보통 다음과 같은 프로세스로 구현된다.
startActivityForResult(intent, requestCode)
로 B Activity를 실행한다.intent.putExtra("key", data)
setResult(resultCode, intent)
finish()
onActivityResult()
가 수행된다.override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
...
}
보통은 이런 방식으로 화면을 처리한다
prepareCall()
하지만 Android 공식 문서는 새로운 Result 처리방식을 제안하고 있다.
참고문서: 활동으로부터 결과 가져오기
prepareCall()
이라는 Android API를 활용한 방식이다. 적용방법은 다음과 같다.
implementation 'androidx.activity:activity-ktx:1.2.0-alpha02'
implementation 'androidx.fragment:fragment-ktx:1.3.0-alpha02'
private val resultLauncher = prepareCall(StartActivityForResult()) {
...
}
resultLauncher.launch(intent)
해당 클래스는 이전의 단방향 데이터 전달이 아닌 다양한 케이스를 결과 데이터 전달을 위한 개념이지만, 아직 이해가 부족하여 사용케이스를 발전시키지 못했다. 이후에 활용사례와 응용방식이 생기면 추가할 예정이다.