[Kotlin] Serializable vs Parcelable


Serializableとは?
  • Javaのタグインタフェース
    :シリアル化(シリアル化)に必要なインタフェース.
  • public interface Serializable {}
    Javaシリアル化(シリアル化)
    これは、Java内部で使用されるオブジェクトまたはデータを바이트 스트림として作成し、外部Javaシステムで使用することを意味する.
    プログラムで使用されるデータは連続的ではなく,内部がポインタで参照されるため,分散したデータを1つの場所に集中して一連のバイトで送信する必要がある.
    Byte Stream
    データをバイト単位で交換します.
    -Serializable内部でReflectionを使用してシリアル処理を行い、処理中に多くの追加オブジェクトが生成されます.これらのごみはGarbage Collectorの目標となり、Garbage Collectorの過度な動作は性能の低下と電池消費を招く.
    2.Parcelableとは?

  • Android SDKのインタフェースとして、Reflectionは設計されていません.Serializableとは異なり、自動的に処理する必要のないReflectionがユーザによって明示的に作成される.

  • 直接Parcelableを実施するとボイラプレートコードが生成される.
    従って、kotlin-parcelize plugin自動処理Parcelableを用いて実現される.
  • plugins {
        id 'kotlin-parcelize'
    }
    @Parcelize
    data class Person(
        val name: String,
        val age: Int
    ): Parcelable