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

2021. 3. 1. 21:45· Android/Component
목차
  1. 목표
  2. Bundle
  3. Bundle의 사용
  4. Activity의 상태 저장 및 복구(onSavedInstanceState, onRestoreInstanceState)
  5. Intent의 extras를 이용하여 다른 구성요소(Activity, Broadcast Receiver 등)에 데이터 전달
반응형

목표

  • 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 입력

 

반응형
  1. 목표
  2. Bundle
  3. Bundle의 사용
  4. Activity의 상태 저장 및 복구(onSavedInstanceState, onRestoreInstanceState)
  5. Intent의 extras를 이용하여 다른 구성요소(Activity, Broadcast Receiver 등)에 데이터 전달


 

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

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

open.kakao.com

'Android/Component' 카테고리의 다른 글
  • [Android] onBackPressedDispatcher 사용해 뒤로가기 동작 설정하기: 뒤로가기 두 번 눌러 종료하기 예제
  • Fragment의 생성자 오버로드는 왜 금지되는가
  • [Bundle] Android Parcel과 Parcelable 알아보기 + kotlin-parcelize plugin 활용하기
  • [Context] ApplicationContext와 ActivityContext
Dev.Cho
Dev.Cho
'조세영의 Kotlin World'는 Kotlin를 전문적으로 다루는 개인 기술 블로그입니다. Kotlin 세계에 대한 양질의 자료를 제공하며 Kotlin, Android, Spring, CI, CD 분야에 대해 다룹니다.
Dev.Cho
조세영의 Kotlin World
Dev.Cho
전체
오늘
어제

블로그 메뉴

  • LinkedIn
  • GitHub
  • 분류 전체보기 (491)
    • Kotlin (104)
      • Class and Interface (19)
      • Variable and Function (8)
      • Modifier (5)
      • Collection (14)
      • Time (8)
      • 동시성 제어 (7)
      • Reactive Programming (2)
      • Paradigm (2)
      • Kotlin 자료구조 (15)
      • Design Patterns (11)
      • Algorithm (3)
      • Exception (1)
      • 기타 (9)
      • Update History (0)
    • Coroutines (32)
      • Coroutine Basics (18)
      • Flow (9)
      • CoroutineScope (3)
      • Debugging (2)
    • Testing Codes (28)
      • Test 기본 (3)
      • JUnit5 (9)
      • MockK (6)
      • Testing Coroutines (1)
      • Testing Android (8)
      • Test 기타 (1)
    • Spring (50)
      • Dependency Injection (18)
      • Settings (5)
      • REST API (0)
      • DevTools (1)
      • MVC (18)
      • Error (2)
      • MongoDB (2)
      • Database (4)
    • Android (39)
      • Architecture (2)
      • Component (5)
      • Manifest (1)
      • Lifecycle (2)
      • Dependency Injection (17)
      • Resource (1)
      • Storage (1)
      • Security and Optimization (1)
      • WebView (2)
      • Error (6)
    • Android Jetpack Compose (33)
      • Compose (6)
      • Compose Modifier (13)
      • Compose Resource (4)
      • Compose State (4)
      • Compose Side Effect (6)
    • Android Jetpack Compose UI (48)
      • Compose Layout (14)
      • Compose Text (10)
      • Compose Button (5)
      • Compose Dialog (2)
      • Compose TextField (0)
      • Compose UIs (4)
      • Compose Animation (1)
      • Compose Canvas (12)
    • Android Jetpack (10)
      • Datastore (5)
      • ViewModel (4)
      • LiveData (1)
      • Paging (0)
    • KMP (5)
    • Programming (4)
    • Machine (9)
      • JVM (7)
      • Linux (2)
    • CI, CD (74)
      • Gradle (12)
      • Groovy Gradle (5)
      • Git (25)
      • Git Remote (5)
      • GitHub (5)
      • GitHub Actions (21)
    • Network (33)
      • GraphQL (12)
      • HTTP (11)
      • Basic (9)
    • 오픈소스 (3)
    • Database (3)
      • MongoDB (3)
    • IDE (6)
      • Android Studio (2)
      • Intellij (4)
    • Firebase (1)
    • Javascript (9)

공지사항

  • 코틀린 코루틴 완전 정복 강의 in 인프런 오픈
  • 코틀린 코루틴의 정석 책 출간
  • Kotlin Coroutines 공식 기술 문서 한국어 번⋯
  • GitHub에서 조세영의 Kotlin World를 Foll⋯
  • 문의&제안

인기 글

태그

  • gradle
  • flow
  • GIT
  • junit
  • Android Compose
  • Coroutine
  • compose
  • Dependency Injection
  • 의존성 주입
  • GraphQL
  • HTTP
  • github
  • Jetpack Compose
  • java
  • Unit Testing
  • Kotlin
  • 유닛 테스팅
  • Spring
  • junit5
  • github actions
  • kotlin spring
  • Spring boot
  • junit4
  • Class
  • Android
  • 코틀린
  • 안드로이드
  • dagger2
  • 코루틴
  • 스프링

최근 글

반응형
hELLO · Designed By 정상우.v4.3.0
Dev.Cho
[Bundle] Android Bundle 이란 무엇인가? Bundle을 이용해 데이터 전달하기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.