[Android] Parcelable接口实现序列化
来源:互联网 发布:如何搭建企业网络平台 编辑:程序博客网 时间:2024/05/15 01:51
github连接:https://github.com/lixiang0/DemoLibs
在实际的使用中,我们经常需要在不同的进程中传递对象实例,但是却不能直接的传递对象,因而需要通过对象的序列化和反序列化来实现对对象的传递。序列化之后标志着我们可以直接传递对象了。
下面我们讲实现通过一个例子来利用Parcelable接口实现对象的序列化。通过在MainActivity中按钮的点击将一个User对象传递到MainActivity2并显示出来。
1.构造User类,并实现Parcelable接口
package string.pub.serial.entity;import android.os.Parcel;import android.os.Parcelable;public class User implements Parcelable{ String name="ruben"; int age=26; String sex="man"; String addr="shenzhen"; String describe="a coder"; public User() { // TODO Auto-generated constructor stub } public User(Parcel paramParcel) { // TODO Auto-generated constructor stub name=paramParcel.readString(); age=paramParcel.readInt(); sex=paramParcel.readString(); addr=paramParcel.readString(); describe=paramParcel.readString(); } @Override public String toString() { return "User [name=" + name + ", age=" + age + ", sex=" + sex + ", addr=" + addr + ", describe=" + describe + "]"; } @Override public int describeContents() { // TODO Auto-generated method stub return 0; } @Override public void writeToParcel(Parcel paramParcel, int paramInt) { // TODO Auto-generated method stub paramParcel.writeString(name); paramParcel.writeInt(age); paramParcel.writeString(sex); paramParcel.writeString(addr); paramParcel.writeString(describe); } public static final Parcelable.Creator<User> CREATOR=new Creator<User>() { @Override public User[] newArray(int paramInt) { // TODO Auto-generated method stub return new User[paramInt]; } @Override public User createFromParcel(Parcel paramParcel) { // TODO Auto-generated method stub return new User(paramParcel); } };}
2.实现MainActivity:
package string.pub.serial;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.LinearLayout;import string.pub.serial.entity.User;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout ll=new LinearLayout(this); ll.setOrientation(LinearLayout.VERTICAL); StringBuilder sb=new StringBuilder(); Button btn_click=new Button(this); btn_click.setText("click to MainActivity2"); btn_click.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View paramView) { // TODO Auto-generated method stub Intent intent=new Intent(); intent.setClass(MainActivity.this, MainActivity2.class); intent.putExtra("value", new User()); startActivity(intent); } }); ll.addView(btn_click); setContentView(ll); }}
3.实现MainActivity2:
package string.pub.serial;import android.app.Activity;import android.os.Bundle;import android.widget.LinearLayout;import android.widget.TextView;import string.pub.serial.entity.User;public class MainActivity2 extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); LinearLayout ll=new LinearLayout(this); ll.setOrientation(LinearLayout.VERTICAL); TextView tv_content=new TextView(this); User user=(User)getIntent().getParcelableExtra("value"); tv_content.setText(user.toString()); ll.addView(tv_content); setContentView(ll);}}
4.注册清单文件:
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="string.pub.serial" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="21" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@android:style/Theme.Holo.Light" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".MainActivity2" android:label="@string/app_name" > <intent-filter> </intent-filter> </activity> </application></manifest>
5.实现效果:
总结:Parcelable接口是Android中的序列化与反序列化的实现方案,它可以实现在不同进程中进行对象的传输和持久化。
0 0
- Android 实现Parcelable接口序列化对象
- [Android] Parcelable接口实现序列化
- android intent 传递对象需要序列化实现Parcelable接口
- Android 中对象实现序列化之Parcelable接口
- Android 实现序列化:Parcelable和Serializable接口的用法
- android开发中对象的序列化-实现Parcelable接口.
- 【android实战经验】实现Parcelable接口进行对象序列化
- Android中通过实现Parcelable接口序列化
- android Parcelable实现序列化
- 自动化快速实现Parcelable接口序列化
- android Parcelable接口序列化对象
- 【Android 】序列化对象接口Parcelable使用方法
- Android 序列化对象接口Parcelable使用方法
- android序列化 Parcelable和Serializable接口
- android的序列化接口Parcelable
- Android使用序列化接口Parcelable、Serializable
- Android 序列化 Parcelable接口用法
- Android使用序列化接口Parcelable、Serializable
- C++设计模式<四>:策略模式(Strategy)
- 数据结构学习笔记(五)
- LeetCode : Multiply Strings (java)
- Word2010编号、多级列表、样式、图注的综合设置
- (Caffe)Eclipse调试的Python接口(动态链接库_caffe.so)
- [Android] Parcelable接口实现序列化
- linux常用命令讲解
- 蘑菇街春招Android岗编程题(一)
- JavaScript学习基础-<script>标签放置位置
- Zend Studio 8.0.1 官方汉化包安装 && 解决文本中文乱码
- 剖析:一次入侵Linux服务器的事件记录 20131222
- Cocos2d-x 3.10 开发环境的配置
- Linux入侵取证:从一次应急事件讲起 20141111
- 一次服务器被入侵后的分析 -20130911