将变量传入和传出GCM任务服务

时间:2015-09-30 12:42:10

标签: android google-cloud-messaging android-service

我正在使用GCM network manager并且我想要传递服务(特别是onRunTask(TaskParams taskParams)一些对象。文档taskParams只是一个字符串和一个包但我想要传递更复杂的物体。

如何做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:1)

一种方法是让您的自定义对象实现Parcelable接口并使用Bundle.putParcelable / Bundle.getParcelable。

与使用Java的本机序列化相比,它需要更多的努力,但它的速度更快(我的意思是,方式更快)。

例如:

public class MyParcelable implements Parcelable {
 private int mData;

 public int describeContents() {
     return 0;
 }

 public void writeToParcel(Parcel out, int flags) {
     out.writeInt(mData);
 }

 public static final Parcelable.Creator<MyParcelable> CREATOR
         = new Parcelable.Creator<MyParcelable>() {
     public MyParcelable createFromParcel(Parcel in) {
         return new MyParcelable(in);
     }

     public MyParcelable[] newArray(int size) {
         return new MyParcelable[size];
     }
 };

 private MyParcelable(Parcel in) {
     mData = in.readInt();
 }

}

您也可以阅读Parcelable vs Serializable