iT邦幫忙

2021 iThome 鐵人賽

DAY 13
0
Mobile Development

Andoroid - Kotlin筆記 (新)系列 第 13

[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" />        

上一篇
[Day12] Android - Kotlin筆記:JetPack - Fragments在Navigation中的參數傳遞(Safe Args)
下一篇
[Day14] Android - Kotlin筆記:LiveData在fragment重建時會重新呼叫兩次的解決方法
系列文
Andoroid - Kotlin筆記 (新)18
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言