java中synize_Android使用Kotlin新特性Parcelize序列化对象

Android对对象序列化主要有两种方式:Serializable和Parcelable。

Serializable实际是使用Java的放射机制对对象做序列化和反序列化,其性能远低于使用Parcelable。但是使用Java写的Parcelable有点繁琐,需要我们实现Parcelable接口,手写很多模板代码。

Java版Parcelable示例public class User implements Parcelable{

private String id;

private String name;

public User(String id, String name, String grade){

this.id = id;

this.name = name;

}

// Getter and setter methods

.........

.........

// Parcelling部分

public User(Parcel in){

String[] data = new String[2];

in.readStringArray(data);

// 使用数组获取属性的值需要和writeToParcel()写进去的顺序一致

this.id = data[0];

this.name = data[1];

}

@Оverride

public int describeContents(){

return 0;

}

@Override

public void writeToParcel(Parcel dest, int flags) {

dest.writeStringArray(new String[] {this.id,

this.name});

}

public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {

public User createFromParcel(Parcel in) {

return new User(in);

}

public User[] newArray(int size) {

return new User[size];

}

};

}

Java版的Parclable,需要重写wirteToParcel方法序列化对象,需要创建以Parcle为参数的构造函数用来对对象反序列化。需要构建Parclable.Creator。

这些代码大多数都是差不多,但我们还是要手写实现。

Kotlin Parcelable特性

Kotlin1.1.4新增了Parcelable特性,添加注解@Parcelize就可以自动生成相应的Parcelable代码。

上面的例子实现如下:@Parcelize

data class User(val id: String, val name: String) : Parcelable

相当的简洁!

使用

1、kotlin:>=1.1.4

2、app的build.gradle添加插件apply plugin: 'kotlin-android-extensions'

3、app的build.gradle下android配置添加androidExtensions {

experimental = true

}

基于kotlin的build.gradle示例apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

android {

compileSdkVersion 26

defaultConfig {

...

}

buildTypes {

...

}

androidExtensions {

experimental = true

}

}

dependencies {

...

}

4、模型实现Parclable,添加@Parclizeimport android.os.Parcelable

import kotlinx.android.parcel.Parcelize

@Parcelize

data class User(val name: String, val age: Int) : Parcelable

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值