Android -- 序列化Parcelable与Serializable区别及用法
2015-04-14 16:53
417 查看
小序
继上一篇博客,http://blog.csdn.net/gaopeng0071/article/details/45043967说到的对象传递,对象类实现了Serializable接口。Serializable接口,是java api提供的接口,实现此接口不需要我们做任何操作,java会自动帮我们进行序列化。
Parcelable接口,是Android提供的接口,实现此接口我们需要取实现接口方法。
两者区别:
Serializable,用起来简单,但是性能低。
Parcelable,需要自己编写实现类,但是速度快对Android平台支持比Serializable稳定,Android平台开发此接口是首选。
用法
对象类代码,代码中实现了writeToParcel、describeContents,以及实现了Creator类的createFromParcel和newArray方法,package com.example.testapp; import android.os.Parcel; import android.os.Parcelable; //public class User implements Serializable { public class User implements Parcelable { protected static final User[][] User = null; private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } User(String name, int age) { this.name = name; this.age = age; } @Override public int describeContents() { // TODO Auto-generated method stub return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(getName()); dest.writeInt(getAge()); } public static final Creator<User> CREATOR = new Creator<User>() { @Override public User createFromParcel(Parcel source) { // TODO Auto-generated method stub return new User(source.readString(), source.readInt()); } @Override public User[] newArray(int size) { // TODO Auto-generated method stub return User[size]; } }; }
A和B的Activity变化不大,只有B在获取对象的时候使用getParcelableExtra方法。
A代码如下
package com.example.testapp; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; public class AMainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_amain); findViewById(R.id.button1).setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(AMainActivity.this, BMainActivity.class); i.putExtra("user", new User("lijingwei", 25)); startActivity(i); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.amain, menu); return true; } }
B代码如下
package com.example.testapp; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.widget.TextView; public class BMainActivity extends Activity { private TextView t; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_bmain); t = (TextView) findViewById(R.id.tv); Intent i = getIntent(); // User user = (User) i.getSerializableExtra("user"); User user = (User) i.getParcelableExtra("user"); t.setText("name=" + user.getName() + ",age=" + user.getAge()); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.bmain, menu); return true; } }
相关文章推荐
- Android中Serializable和Parcelable序列化的区别
- Android中的Parcelable接口和Serializable用法和区别
- Android 实现序列化:Parcelable和Serializable接口的用法
- Android序列化Serializable和Parcelable的理解和区别
- Android - Parcelable接口用法 和 与 Serializable 的区别
- Android中Serializable和Parcelable的用法及区别
- Android序列化Serializable和Parcelable区别
- 序列化 Serializable和Parcelable用法及区别
- Android 序列化Serializable和Parcelable的理解和区别
- Android中序列化的Parcelable与Serializable区别及其AS插件
- Android Serializable和Parcelable的区别和用法
- Android Parcelable和Serializable的区别
- Android系统中Parcelable和Serializable的区别
- Android使用序列化接口Parcelable、Serializable
- [转]Android Parcelable和Serializable的区别
- 序列化Parcelable和Serializable接口的区别
- Android中Serializable和Parcelable序列化对象详解
- Android Parcelable和Serializable的区别
- Android中数据序列化之Serializable与Parcelable
- Android序列化:Serializable & Parcelable