安卓通过Intent传递自定义类

来源:互联网 发布:电脑实时监控软件 编辑:程序博客网 时间:2024/05/20 04:32
1.Serializable(不推荐)
实现要点:类继承Serializable接口
举例:MainActivity通过Intent跳转到SubActivity的时候传递Test类实例test。
MainActivity.java
   Intent intent = new Intent(MainActivity.this,SubActivity.class);
    Test test = new Test();
    test.name = "hello";
    intent.putExtra("test",test);
   startActivity(intent);
SubActivity.java
   Intent intent = getIntent();
    Test test =(Test)intent.getSerializableExtra("test");
Test.java
   public class Testimplements Serializable
    {
       public String name;
    }
2.Parcelable(推荐)
实现要点:类继承Parcelable接口,且需要实现三个东西
1)writeToParcel 方法。
2)describeContents方法。
3)静态的Parcelable.Creator接口,有两个方法:
   createFromParcel(Parcelin) 
   newArray(intsize) 
举例:MainActivity通过Intent跳转到SubActivity的时候传递Test类实例test。
MainActivity.java(同上)
    Intentintent = new Intent(MainActivity.this, SubActivity.class);
    Test test = new Test();
    test.name = "hello";
    intent.putExtra("test",test);
   startActivity(intent);
SubActivity.java
    Intentintent = getIntent();
    Test test =intent.getParcelableExtra("test");
Test.java
    publicclass Test implements Parcelable
    {
       public String name;

       @Override
       public int describeContents()
       {
           return0;
       }

       @Override
      public voidwriteToParcel(Parcel dest, int flags)
      {
         dest.writeString(name);
      }

      public static finalParcelable.Creator CREATOR = new Parcelable.Creator()
      {
         public Test createFromParcel(Parcelin)
         {
             Testtest = new Test();
            test.name = in.readString();
            return test;
         }
         public Test[] newArray(int size)
         {
            return new Test[size];
         }
      };
}
3.其他有用信息
Parcelable的性能比Serializable好,在内存开销方面较小,所以在内存间数据传输时推荐使用Parcelable,如activity间传输数据,而Serializable可将数据持久化方便保存,所以在需要保存或网络传输数据时选择Serializable。
0 0
原创粉丝点击