ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [안드로이드] Serializable
    카테고리 없음 2024. 5. 7. 17:11

    사용 이유

    직렬화 인터페이스로 객체를 바이트 스트림으로 변환 후

    액티비티간에 데이터를 공유하기 위해 사용합니다.


    장점

    상속 하나로 간편하게 사용할 수 있습니다.

     

    단점

    Reflection을 사용하여 역/직렬화를 하므로 CPU와 메모리 자원을 많이 먹습니다.


    사용법

    // Serializable를 상속하는 클래스를 만듭니다.
    data class Person(name: String, age: Int) : Serializable
    class MainActivity : AppCompatActivity() {
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
    
            val person = Person("홍길동", 20)
            val intent = Intent(this, TestActivity::class.java)
            // Intent에서 putExtra로 직렬 가능한 클래스를 넘깁니다.
            intent.putExtra("person", person)
            startActivity(intent)
        }
    }
    class TestActivity : AppCompatActivity() {
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_test)
            
            // getSerializableExtra로 직렬화된 데이터를 받아와 Person으로 캐스팅해줍니다.
            val person = intent.getSerializableExtra("person") as Person
        }
    }
Designed by Tistory.