Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발자이야기

android intent bundle 본문

android

android intent bundle

개발자가되고싶어 2021. 7. 22. 01:24
bundle

 

이번엔 android bundle에 대해 알아보겠습니다.

 

bundle이란??

단순히 여러가지의 타입의 값들을 저장하는 묶음 이라고 생각 합시다.

그 안에서는 map을 이용하여 값들을 저장합니다.

val bundle = Bundle()
bundle.putString("key","value")

단순히 위와 같이 사용합니다. map 의 <key, value> 형식과 같으며 실제로 내부적으로는 map 을 사용하여 값을 저장합니다.

Intent

android 개발을 하다보면 필히 intent를 사용하며 값을 전달해야 하는 경우가 생깁니다.

그럴땐 우린 아래와 같이 값 전달을 합니다.

val intent = Intent(this, Activity::class.java)
intent.putExtra("data", "값 받아라!")
intent.putExtra("data2", "이값도 받아라!")

아래와 같이 bundle로 묶어 intent로 전달 할 수도 있습니다.

val bundle = Bundle()
bundle.putString("data", "값 받아라!")
bundle.putString("data2", "이값도 받아라!")
intent.putExtra("bundle", bundle)

거리낌 없이 쓰는 putExtra 내부에선 bundle 클래스를 이용하여 Map 객체에 값 저장을 합니다.

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

@BaseBundle.java
public void putString(@Nullable String key, @Nullable String value) {
    unparcel();
    mMap.put(key, value);
}

위와 같이 전달된 값을 가지고 Bundle 객체에 값을 Map으로 저장하게 되는 것 입니다.

 

intent를 사용하다보면 DataClass를 전달 해야 하는 상황도 심심찮게 만날 수 있습니다.

data class DataClass(
        var data: String = ""
): Serializable

위와 같이 Serializable interface를 명시해 주기만 하면

@Send
val bundle = Bundle()
bundle.putSerializable("dataClass", DataClass())

val intent = Intent(this, Activity::class.java)
intent.putExtra("dataClass", DataClass())


@Receiver
val intent = getIntent()
val dataClass = intent.getSerializableExtra("dataClass") as DataClass

위와 같이 Data Class 또한 전달 하고 수신 받을 수 있습니다.

 

Bundle은 android 개발에 있어 꼭 필요한 요소라 생각되어 포스팅 합니다.

크게 어려운 내용은 없으며 복잡한 설명을 피하기 위해 간단히 사용법 만을 작성합니다.

읽어주셔서 감사합니다.

 

 

 

'android' 카테고리의 다른 글

android gpu 렌더링  (0) 2021.07.26
android RecycledViewPool  (0) 2021.07.24
android launchMode  (0) 2021.07.13
android 수명주기  (0) 2021.07.08
android Dagger  (0) 2021.06.09