关于Parcelable接口

关于Parcelable接口
----------------------------------
1. 需要实现抽象方法
可以不关心public int describeContents()方法的实现,直接返回任意int类型数据即可
public void writeToParcel(Parcel dest, int flags)用于表现如何将类的成员写入到Parcel容器中,实现该方法时,通常是调用参数Parcel dest的各write???()方法,将类的成员写入
2. 必须创建指定的常量
必须创建常量public static final Parcelable.Creator<T> CREATOR的对象,该常量的所有声明部分都是不可修改的,包括访问权限、修饰符、数据类型、常量名
3. 通用做法
通常会自定义void readFromParcel(Parcel source)方法,用于从Parcel容器中读取数据,并且在该方法中,使用于writeToParcel()方法中完全一致的顺序,调用Parcel source参数的read????()方法将数据读出,并赋值给类的成员。
通常会自定义带Parcel类型参数的构造方法,并在该构造方法中调用readFromParcel()方法,用于初始化类的对象。
在创建CREATOR常量时,必须实现的抽象方法中需要当前类的成员,则可以调用上述带Parcel类型参数的构造方法。


import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.os.RemoteException;
import android.util.Log;


public class StudentService extends Service {

private String tag = "cn.com.tarena.intent_extra";


@Override
public void onCreate() {
super.onCreate();
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Student stu = intent.getParcelableExtra("student");
Log.d(tag , "receive stu -> " + stu);
return super.onStartCommand(intent, flags, startId);
}

private Student getStudent() {
Student stu = new Student();
stu.name = "Jack";
stu.from = "ShangHai";
stu.age = 28;
return stu;
}


@Override
public IBinder onBind(Intent intent) {
return new InnerBinder();
}

private class InnerBinder extends IStudentDao.Stub {

@Override
public Student getStudentInformation() throws RemoteException {
return getStudent();
}

}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值