Android -- 序列化Parcelable与Serializable区别及用法
来源:互联网 发布:软件外包管理流程 编辑:程序博客网 时间:2024/06/06 12:31
小序
继上一篇博客,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; }}
0 0
- Android -- 序列化Parcelable与Serializable区别及用法
- 序列化 Serializable和Parcelable用法及区别
- Android序列化Serializable和Parcelable区别
- Android序列化 Serializable与Parcelable
- android (序列化) serializable 与 Parcelable
- Android Serializable与Parcelable 用法
- 序列化--Serializable与Parcelable
- Android-序列化,Parcelable,Serializable
- Android Serializable Parcelable 序列化
- Android 序列化Serializable、Parcelable
- Android序列化:Serializable & Parcelable
- Android序列化Parcelable、Serializable
- Android序列化:Parcelable/Serializable
- Android -序列化 : Serializable / Parcelable
- Android序列化:Serializable Parcelable
- Android中Serializable和Parcelable的用法及区别
- Android 实现序列化:Parcelable和Serializable接口的用法
- Android - Parcelable接口用法 和 与 Serializable 的区别
- Mybatis/Ibatis,数据库操作的返回值
- Linux中的错误:too many open files
- Android开发帮助文档Doc打开速度慢解决_Python篇
- C#第一次作业
- ACdream之取集合中任意俩个数做差,求集合最大扩充
- Android -- 序列化Parcelable与Serializable区别及用法
- 魅族手机内存卡微信数据清除怎么恢复
- Qt Creator 安装 VLD
- 算法导论第二章mergesort的C++ 实现
- 观察者模式浅析(1)
- Github+Jekyll建独立博客
- C#实验4 异常处理
- hibernate获取session连接对象
- 一种常用的累加方法——前缀和