ckgod.github Help

Q18) Bundle

Bundle의 목적은 무엇인가요?

BundleActivity, Fragment, Service와 같은 구성 요소 간에 데이터를 전달하는 데 사용되는 키-값 쌍 데이터 구조입니다. 일반적으로 앱 내에서 소량의 데이터를 효율적으로 전송하는 데 사용됩니다. Bundle은 가볍고 Android OS가 쉽게 관리하고 전송할 수 있는 형식으로 데이터를 직렬화하도록 설계되었습니다.

Bundle의 일반적인 사용 사례

  1. Activity 간 데이터 전달: 새 Activity를 시작할 때, IntentBundle을 첨부하여 대상 Activity로 데이터를 전달할 수 있습니다.

  2. Fragment 간 데이터 전달: Fragment 트랜잭션에서 BundlesetArguments()getArguments()와 함께 사용하여 Fragment 간에 데이터를 전송합니다.

  3. 인스턴스 상태 저장 및 복원: Bundle은 구성 변경 중에 임시 UI 상태를 저장하고 복원하기 위해 onSaveInstanceState()onRestoreInstanceState()와 같은 lifecycle methods에서 사용됩니다.

  4. Service로 데이터 전달: Service를 시작하거나 바인딩된 Service로 데이터를 전달할 때 Bundle이 데이터를 전달할 수 있습니다.

Bundle의 작동 방식

Bundle은 데이터를 키-값 구조로 직렬화하여 작동합니다. 키는 strings이며, 값은 primitive types, Serializable, Parcelable 객체 또는 다른 Bundles일 수 있습니다. 이를 통해 데이터를 효율적으로 저장하고 전송할 수 있습니다.

예시: Activity 간 데이터 전달

// Activity A에서 데이터 전송 val intent = Intent(this, ActivityB::class.java).apply { putExtra("user_name","John Doe") putExtra("user_age", 25) } startActivity(intent) // Activity B에서 데이터 수신 val name = intent.getStringExtra("user_name") val age = intent.getIntExtra("user_age", -1)

이 예시에서 데이터는 Intent.putExtra()를 통해 Bundle 내부에 패키징됩니다.

예시: Fragment 간 데이터 전달

// Fragment로 데이터 전송 val fragment = MyFragment().apply { arguments = Bundle().apply { putString("user_name","Jane Doe") putInt("user_age", 30) } } // Fragment에서 데이터 검색 val name = arguments?.getString("user_name") val age = arguments?.getInt("user_age")

예시: 상태 저장 및 복원

override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) outState.putString("user_input", editText.text.toString()) } override fun onRestoreInstanceState(savedInstanceState: Bundle) { super.onRestoreInstanceState(savedInstanceState) val userInput = savedInstanceState.getString("user_input") editText.setText(userInput) }

이 경우 Bundle은 화면 회전과 같은 구성 변경 중에도 사용자 입력이 유지되도록 합니다.

요약

BundleAndroid에서 구성 요소 및 lifecycle events 전반에 걸쳐 데이터를 효율적으로 전달하고 보존하는 데 중요한 구성 요소입니다. 가볍고 유연한 구조 덕분에 애플리케이션 상태 및 데이터 전송을 관리하는 데 필수적인 도구입니다.

21 October 2025