欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android序列化實現(xiàn)接口Serializable與Parcelable詳解

 更新時間:2022年12月07日 10:36:56   作者:懶到死的程序員  
我們使用 Intent 傳遞數(shù)據(jù)的時候,putExtra() 所支持的數(shù)據(jù)類型事有限的,當需要傳遞自定義對象的時候就需要序列化。Serializable更簡單但是會把整個對象進行序列化因此效率比Parcelable低一些

一、Serializable(對象)

只需要實現(xiàn)Serializable 接口即可。將一個對象序列化轉換成可存儲或傳輸?shù)臓顟B(tài),然后再強轉回來使用(反序列化)。

class Person : Serializable {
    var name = ""
    var age = 0
}
//傳遞
OneActivity {
    val person = Person().apply {
        name = "張三"
        age = 18
    }
    Intent(this, TwoActivity::class.java).also {
        it.putExtra("person", person)
        startActivity(it)
    }
}
//獲取
TwoActivity {
    val person = intent.getSerializableExtra("person") as Person    //反序列化成對象
}

二、Parcelable(屬性)

將一個對象進行分解,分解后的每一個屬性都是Intent 所支持的數(shù)據(jù)類型。

2.1 實現(xiàn)方式(不推薦)

創(chuàng)建一個類實現(xiàn) Parcelable 接口,定義好屬性,按 ctrl+1 編譯器會自動幫我們生成。

  • 實現(xiàn) Parcelable 接口,重寫 describeContents() 和 writeToParcel() 兩個函數(shù)。describeContents() 直接返回 0 就行。writeToParcel() 調(diào)用 writeXXX() 將類中屬性一一寫入。
  • 創(chuàng)建一個名為 CREATOR 的伴生對象實現(xiàn) Parcelable.Creator 接口,將泛型類型指定為<Person>,重寫 createFromParcel() 和 newArray() 兩個函數(shù)。createFromParcel()中創(chuàng)建一個 Person 對象返回,并調(diào)用 readXXX() 將之前寫入的屬性一一讀出(注意讀寫的順序要一致)。newArray()中調(diào)用 arrayOfNulls() 傳入形參 size 作為數(shù)組大小即可。
class Person() : Parcelable {
    var name = ""
    var age = 0
    constructor(parcel: Parcel) : this() {
        //讀出
        name = parcel.readString() ?: ""
        age = parcel.readInt()
    }
    //寫入
    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeString(name)
        parcel.writeInt(age)
    }
    //返回0就行
    override fun describeContents(): Int {
        return 0
    }
    //伴生對象實現(xiàn)接口
    companion object CREATOR : Parcelable.Creator<Person> {
        //返回對象
        override fun createFromParcel(parcel: Parcel): Person {
            return Person(parcel)
        }
        //返回一個數(shù)組,形參 size 作為數(shù)組大小
        override fun newArray(size: Int): Array<Person?> {
            return arrayOfNulls(size)
        }
    }
}
//傳遞方式和 Serializable 一樣,使用如下:
TwoActivity {
    val person = intent.getParcelableExtra("person")
}

2.2 注解方式(推薦)

Kotlin提供了更簡便的寫法,傳遞的屬性都需要定義在主構造中。

//Module Gradle 引入插件
plugins {
    id 'kotlin-parcelize'
}
//使用
@Parcelize
class Person(val name: String, var age: Int) : Parcelable

到此這篇關于Android序列化實現(xiàn)接口Serializable與Parcelable詳解的文章就介紹到這了,更多相關Android Serializable與Parcelable內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Android ListView適配器(Adapter)優(yōu)化方法詳解

    Android ListView適配器(Adapter)優(yōu)化方法詳解

    這篇文章主要介紹了Android ListView優(yōu)化方法詳解的相關資料,這里舉例說明該如何對ListView 進行優(yōu)化,具有一定的參考價值,需要的朋友可以參考下
    2016-11-11
  • Android仿淘寶商品詳情頁

    Android仿淘寶商品詳情頁

    這篇文章主要為大家詳細介紹了Android仿淘寶商品詳情頁,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • Android自定義TextView實現(xiàn)文字傾斜效果

    Android自定義TextView實現(xiàn)文字傾斜效果

    有時候Android自帶的控件無法滿足我們的某些要求,這時就需要我們自定義控件來實現(xiàn)這些功能。比如在實際開發(fā)應用中,我們有時需要將TextView的文字傾斜一定的角度,就需要自定義TextView。下面這篇文章就給大家介紹了利用Android TextView如何實現(xiàn)文字傾斜效果。
    2016-11-11
  • Android仿京東分類模塊左側分類條目效果

    Android仿京東分類模塊左側分類條目效果

    這篇文章主要為大家詳細介紹了Android仿京東分類模塊左側分類條目效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 總結安卓(Android)中常用的跳轉工具

    總結安卓(Android)中常用的跳轉工具

    在大家日常開發(fā)的時候經(jīng)常會用到各式各樣的跳轉,如跳轉到QQ、微信聊天界面、跳轉到聯(lián)系人界面或者跳轉到瀏覽器和照相機等等之類的,本文將常用到的一些跳轉集合到一起,這樣更方便大家以后使用,有需要的小伙伴們可以參考借鑒。
    2016-08-08
  • Android自定義View模仿QQ討論組頭像效果

    Android自定義View模仿QQ討論組頭像效果

    最近發(fā)現(xiàn)QQ討論組的頭像非常不錯,正好最近又有時間,所有就動手實踐了下,所以下面這篇文章主要給大家介紹了Android自定義View模仿QQ討論組頭像效果的相關資料,文中給出了詳細的介紹的示例代碼,需要的朋友可以參考學習,下面來一起看看吧。
    2017-04-04
  • Android中點擊事件的四種寫法詳解

    Android中點擊事件的四種寫法詳解

    本篇文章主要介紹了Android中點擊事件的四種寫法詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Android studio 切換flutterSDK之后報錯及解決辦法(推薦)

    Android studio 切換flutterSDK之后報錯及解決辦法(推薦)

    這篇文章主要介紹了Android studio 切換flutterSDK之后報錯及解決辦法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Android使用Retrofit上傳文件功能

    Android使用Retrofit上傳文件功能

    這篇文章主要為大家詳細介紹了Android使用Retrofit上傳文件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 圣誕節(jié),寫個程序練練手————Android 全界面懸浮按鈕實現(xiàn)

    圣誕節(jié),寫個程序練練手————Android 全界面懸浮按鈕實現(xiàn)

    這篇文章主要介紹了圣誕節(jié),寫個程序練練手————Android 全界面懸浮按鈕實現(xiàn)的相關資料,需要的朋友可以參考下
    2015-12-12

最新評論