[Day13] Android - Kotlin笔记:Parcelable & Serializable 与 SafeArgs的传递

这边简单介绍两者差异和选择:

Parcelable

  • 效能比Serializable好,在记忆体开销方面较小。
  • 资料传输时推荐使用Parcelable,如activityfragment间的资料传递。

Serializable

  • Serializable可将资料持久化储存。
  • 需要储存或网路传输资料时选择Serializable

由於昨天提到argsType
今天顺便举例每个型别应该如何传递
尤其是ParcelableSerializable
(以及array)


Array (integer array为例)

<argument
  android:name="myInt"
  app:argType="integer[]"
  app:nullable="true"
  android:defaultValue="@null" />
  1. 可以使用 app:nullable="true"
  2. 仅支持一个默认值,即@null

Integer

<argument
  android:name="myInt"
  app:argType="integer"
  app:nullable="false"
  android:defaultValue="0" />

Float

<argument
  android:name="myInt"
  app:argType="float"
  app:nullable="false"
  android:defaultValue="0" />

Long

<argument
  android:name="myInt"
  app:argType="long"
  app:nullable="false"
  android:defaultValue="0L" />

Boolean

<argument
  android:name="myInt"
  app:argType="boolean"
  app:nullable="false"
  android:defaultValue="false" />

String

<argument
  android:name="myString"
  app:argType="string"
  app:nullable="true"
  android:defaultValue="@null" />

resource reference

//明天补上>_<

Enum

enum class MyGenderEnum {
    MALE, FEMALE
}
 <argument
    android:name="navigateFrom"
    app:argType="com.example.MyGenderEnum" 
    />                      

Parcelable

@Parcelize
data class MyData(
    val id: Int,
    val name: String,
) : Parcelable
<argument
    android:name="editBankCard"
    android:defaultValue="@null"
    app:argType="com.example.MyData"
    app:nullable="true" />        

Serializable

data class MyData(
    val id: Int,
    val name: String,
) : Serializable
<argument
    android:name="editBankCard"
    android:defaultValue="@null"
    app:argType="com.example.MyData"
    app:nullable="true" />        

<<:  [30天 Vue学好学满 DAY16] slot 插槽

>>:  day2 CCNA - switch (雷)这东西不简单

小小聊一下 JDK跟JRE 吧!

来看看昨天的问题吧!顺便订个顺序~ javac 这个工具哪里来的呢? static 代表什麽意思呢?...

Day04-CRUD API 实作(四)Model、Migration

大家好~ 今天要开始实作留言功能, 个人习惯先从建立 Model 开始, 在建立 Model 时, ...

Day23 - 在 Next.js 中如何共用 Layout

前言 在前一篇文章中,我们了解了怎麽使用 _app.tsx 撰写共用 layout 的 compon...

Day 15 -版本控制与git flow

前十四天我们快速看过了Vue的语法以及一些基本概念,今天我们要跳一下来看何谓版本控制与git flo...

Day 21 资料宝石:【Lab】RDS架构 建立自己的第一台云端资料库 (上)

今天我们将开始进行 RDS Lab 练习,架构自己的第一台云端资料库。由於此章节非常大,我将会分成...