Android/Component

[Bundle] Android Bundle 이란 무엇인가? Bundle을 이용해 데이터 전달하기

목표

  • Bundle이 가진 특성을 이해한다.
  • Bundle에 어떤 객체가 들어가고 나올 수 있는지 안다.

Bundle

 Bundle이란 Map형태로 구현된 데이터의 묶음(Bundle)이다. Map형태라 key 값이 String이며, value값에는 Int, String과 같은 간단한 타입부터 Serializable, Parcelable 같은 복잡한 타입이 들어올 수 있다. Android에서는 객체를 전달할 때 보통 Parcelable을 구현한 객체를 전달한다.

 *Parcelable에 대해 모른다면 [Bundle] Parcel과 Parcelable 글을 참조

 

 

Bundle의 사용

Android에서는 Bundle을 다음의 활동에 사용한다.

 

Activity의 상태 저장 및 복구(onSavedInstanceState, onRestoreInstanceState)

Bundle은 데이터 저장 객체로 상태 저장 및 복구에 사용된다. Activity가 onStop()되기 전에 onSavedInstanceState에서 저장할 데이터를 저장시키며, onStart()이후에 onRestoreInstanceState에서 복구시킨다.

override fun onRestoreInstanceState(savedInstanceState: Bundle) {
    val savedProject : Project? = savedInstanceState.getParcelable("project")
    super.onRestoreInstanceState(savedInstanceState)
}

코드1. Activity에서 저장된 데이터 복구시키기

 

Intent의 extras를 이용하여 다른 구성요소(Activity, Broadcast Receiver 등)에 데이터 전달

Intent에서는 putExtra메서드를 이용해 데이터를 입력할 수 있다. 

그림1. Intent에 다양한 데이터 입력

이 때 입력되는 Extra가 바로 Bundle 객체이다. 아래 코드는 putExtra에 Parcelable을 입력하는 예시로 extra에 Parcelable을 입력할 때 Bundle객체를 생성하여 입력하는 것을 볼 수 있다.

    public @NonNull Intent putExtra(String name, @Nullable Parcelable[] value) {
        if (mExtras == null) {
            mExtras = new Bundle();
        }
        mExtras.putParcelableArray(name, value);
        return this;
    }

코드2. putExtra를 이용한 Parcelable 입력

 

반응형

 

이 글의 저작권은 Dev World 에 있습니다. 글, 이미지 무단 재배포 및 변경을 금지합니다.

 

 

Kotlin, Android, Spring 사용자 오픈 카톡

오셔서 궁금한 점을 질문해보세요!
비밀번호 : kotlin22

open.kakao.com