关于Parcelable接口

    xiaoxiao2021-12-14  20

    关于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(); } } }
    转载请注明原文地址: https://ju.6miu.com/read-962854.html

    最新回复(0)